projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix undefined behavior in free
[musl]
/
src
/
malloc
/
malloc.c
diff --git
a/src/malloc/malloc.c
b/src/malloc/malloc.c
index
d5ee428
..
9e05e1d
100644
(file)
--- a/
src/malloc/malloc.c
+++ b/
src/malloc/malloc.c
@@
-450,14
+450,15
@@
copy_realloc:
void free(void *p)
{
void free(void *p)
{
- struct chunk *self = MEM_TO_CHUNK(p);
- struct chunk *next;
+ struct chunk *self, *next;
size_t final_size, new_size, size;
int reclaim=0;
int i;
if (!p) return;
size_t final_size, new_size, size;
int reclaim=0;
int i;
if (!p) return;
+ self = MEM_TO_CHUNK(p);
+
if (IS_MMAPPED(self)) {
size_t extra = self->psize;
char *base = (char *)self - extra;
if (IS_MMAPPED(self)) {
size_t extra = self->psize;
char *base = (char *)self - extra;