X-Git-Url: https://git.gag.com/?p=debian%2Fgzip;a=blobdiff_plain;f=lib%2Fmalloca.h;fp=lib%2Fmalloca.h;h=1e47813ff48b96d20f9b639e9743b0b873cfff12;hp=499e82209175b5ab17694efb2b942bcc529cedcf;hb=dc02bf0d39a3ae0d90d9b7b0feb32c2cc7cdff86;hpb=a8a88eddaa90432e6ec1b8d9d5c9842bc91afd1d diff --git a/lib/malloca.h b/lib/malloca.h index 499e822..1e47813 100644 --- a/lib/malloca.h +++ b/lib/malloca.h @@ -56,8 +56,10 @@ extern "C" { the function returns. Upon failure, it returns NULL. */ #if HAVE_ALLOCA # define malloca(N) \ - ((N) < 4032 - sa_increment \ - ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \ + ((N) < 4032 - (2 * sa_alignment_max - 1) \ + ? (void *) (((uintptr_t) (char *) alloca ((N) + 2 * sa_alignment_max - 1) \ + + (2 * sa_alignment_max - 1)) \ + & ~(uintptr_t)(2 * sa_alignment_max - 1)) \ : mmalloca (N)) #else # define malloca(N) \ @@ -119,10 +121,7 @@ enum | (sa_alignment_longlong - 1) #endif | (sa_alignment_longdouble - 1) - ) + 1, -/* The increment that guarantees room for a magic word must be >= sizeof (int) - and a multiple of sa_alignment_max. */ - sa_increment = ((sizeof (int) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max + ) + 1 }; #endif /* _MALLOCA_H */