X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fmalloc%2Fmalloc.c;h=207b6ef2c2c2e481fbf4a56dd6b1143a5d6824f6;hp=bc8382e48862a7d12986fcb1a078544daf860f9a;hb=2afebbbcd16e8bfc5e008a40b2faf3bd8cf14e88;hpb=b052f13cd1215cf444f16ccf14c96e32f61f73e0 diff --git a/src/malloc/malloc.c b/src/malloc/malloc.c index bc8382e4..207b6ef2 100644 --- a/src/malloc/malloc.c +++ b/src/malloc/malloc.c @@ -120,14 +120,14 @@ static int bin_index(size_t x) x = x / SIZE_ALIGN - 1; if (x <= 32) return x; if (x > 0x1c00) return 63; - return ((union { float v; uint32_t r; }){ x }.r>>21) - 496; + return ((union { float v; uint32_t r; }){(int)x}.r>>21) - 496; } static int bin_index_up(size_t x) { x = x / SIZE_ALIGN - 1; if (x <= 32) return x; - return ((union { float v; uint32_t r; }){ x }.r+0x1fffff>>21) - 496; + return ((union { float v; uint32_t r; }){(int)x}.r+0x1fffff>>21) - 496; } #if 0 @@ -395,7 +395,7 @@ void *realloc(void *p, size_t n) size_t oldlen = n0 + extra; size_t newlen = n + extra; /* Crash on realloc of freed chunk */ - if ((uintptr_t)base < mal.brk) *(char *)0=0; + if ((uintptr_t)base < mal.brk) *(volatile char *)0=0; if (newlen < PAGE_SIZE && (new = malloc(n))) { memcpy(new, p, n-OVERHEAD); free(p); @@ -458,7 +458,7 @@ void free(void *p) char *base = (char *)self - extra; size_t len = CHUNK_SIZE(self) + extra; /* Crash on double free */ - if ((uintptr_t)base < mal.brk) *(char *)0=0; + if ((uintptr_t)base < mal.brk) *(volatile char *)0=0; __munmap(base, len); return; }