|
|
Message-ID: <05e2d053cdb7c8726eb0f9bcebbbf048@exys.org>
Date: Wed, 12 Oct 2011 16:46:30 +0200
From: aep <aep@...s.org>
To: <musl@...ts.openwall.com>
Subject: Re: [PATCH] properly terminate linked link of dsos
clang optimized away the check in calloc.c to false.
I can work around it with a cast to something volatile:
diff --git a/src/malloc/calloc.c b/src/malloc/calloc.c
index 9d57456..22f2c01 100644
--- a/src/malloc/calloc.c
+++ b/src/malloc/calloc.c
@@ -13,8 +13,10 @@ void *calloc(size_t m, size_t n)
n *= m;
p = malloc(n);
if (!p) return 0;
+
+ volatile long long dont_optimize_me = p;
/* Only do this for non-mmapped chunks */
- if (((size_t *)p)[-1] & 7) {
+ if (((size_t *)dont_optimize_me)[-1] & 7) {
/* Only write words that are not already zero */
m = (n + sizeof *z - 1)/sizeof *z;
for (z=p; m; m--, z++) if (*z) *z=0;
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.