From: Gerrit Pape Date: Fri, 24 Nov 2006 08:53:57 GMT Subject: Re: [PATCH] archive-zip: don't use sizeof(struct ...) Message-ID: <20061124085357.21541.qmail@fd76b23131eb24.315fe32.mid.smarden.org> In-Reply-To: <45661A7D.9070207@lsrfire.ath.cx> On Thu, Nov 23, 2006 at 11:02:37PM +0100, Ren? Scharfe wrote: > We can't rely on sizeof(struct zip_*) returning the sum of > all struct members. At least on ARM padding is added at the > end, as Gerrit Pape reported. This fixes the problem but > still lets the compiler do the summing by introducing > explicit padding at the end of the structs and then taking > its offset as the combined size of the preceding members. > > As Junio correctly notes, the _end[] marker array's size > must be greater than zero for compatibility with compilers > other than gcc. The space wasted by the markers can safely > be neglected because we only have one instance of each > struct, i.e. in sum 3 wasted bytes on i386, and 0 on ARM. :) > > We still rely on the compiler to not add padding between the > struct members, but that's reasonable given that all of them > are unsigned char arrays. > > Signed-off-by: Rene Scharfe