瀏覽代碼

mem: f_malloc - properly set empty slot in free hash

- reported by Juha Heninanen
Daniel-Constantin Mierla 10 年之前
父節點
當前提交
f6400aa197
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      mem/f_malloc.c

+ 4 - 1
mem/f_malloc.c

@@ -180,7 +180,10 @@ static inline void fm_extract_free(struct fm_block* qm, struct fm_frag* frag)
 	if(frag->prv_free) {
 		frag->prv_free->u.nxt_free = frag->u.nxt_free;
 	} else {
-		qm->free_hash[hash].first = frag->u.nxt_free;
+		if(frag->u.nxt_free!=qm->last_frag)
+			qm->free_hash[hash].first = frag->u.nxt_free;
+		else
+			qm->free_hash[hash].first = NULL;
 	}
 	if(frag->u.nxt_free && frag->u.nxt_free!=qm->last_frag) {
 		frag->u.nxt_free->prv_free = frag->prv_free;