# HG changeset patch # User Ryan C. Gordon # Date 1241339081 25200 # Node ID 0410dc655d4571b73d8453de2a8bd58e26702dc1 # Parent 845a258ba28e793788c06a51ca1629151804c246 Fixed strict-aliasing issue that gcc 4.4 complains about. --- a/archivers/zip.c Mon Mar 23 16:57:59 2009 -0400 +++ b/archivers/zip.c Sun May 03 01:24:41 2009 -0700 @@ -375,13 +375,13 @@ static PHYSFS_sint64 zip_find_end_of_central_dir(void *in, PHYSFS_sint64 *len) { PHYSFS_uint8 buf[256]; + PHYSFS_uint8 extra[4]; PHYSFS_sint32 i = 0; PHYSFS_sint64 filelen; PHYSFS_sint64 filepos; PHYSFS_sint32 maxread; PHYSFS_sint32 totalread = 0; int found = 0; - PHYSFS_uint32 extra = 0; filelen = __PHYSFS_platformFileLength(in); BAIL_IF_MACRO(filelen == -1, NULL, 0); /* !!! FIXME: unlocalized string */ @@ -419,7 +419,7 @@ { if (__PHYSFS_platformRead(in, buf, maxread - 4, 1) != 1) return(-1); - *((PHYSFS_uint32 *) (&buf[maxread - 4])) = extra; + memcpy(&buf[maxread - 4], &extra, sizeof (extra)); totalread += maxread - 4; } /* if */ else @@ -429,7 +429,7 @@ totalread += maxread; } /* else */ - extra = *((PHYSFS_uint32 *) (&buf[0])); + memcpy(&extra, buf, sizeof (extra)); for (i = maxread - 4; i > 0; i--) {