浏览代码

fix undefined behavior in free

Alexander Monakov 7 年之前
父节点
当前提交
60ab365cae
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      src/malloc/malloc.c

+ 3 - 2
src/malloc/malloc.c

@@ -450,14 +450,15 @@ copy_realloc:
 
 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;
 
+	self = MEM_TO_CHUNK(p);
+
 	if (IS_MMAPPED(self)) {
 		size_t extra = self->psize;
 		char *base = (char *)self - extra;