1
0
Эх сурвалжийг харах

Merge pull request #1321 from TanekLiang/memheap-fixed

[Kernel][memheap] fix rt_realloc bugs
Bernard Xiong 7 жил өмнө
parent
commit
8ea9dd6579
1 өөрчлөгдсөн 8 нэмэгдсэн , 0 устгасан
  1. 8 0
      src/memheap.c

+ 8 - 0
src/memheap.c

@@ -659,6 +659,12 @@ void *rt_realloc(void *rmem, rt_size_t newsize)
     if (rmem == RT_NULL)
     if (rmem == RT_NULL)
         return rt_malloc(newsize);
         return rt_malloc(newsize);
 
 
+    if (newsize == 0)
+    {
+        rt_free(rmem);
+        return RT_NULL;
+    }
+
     /* get old memory item */
     /* get old memory item */
     header_ptr = (struct rt_memheap_item *)
     header_ptr = (struct rt_memheap_item *)
                  ((rt_uint8_t *)rmem - RT_MEMHEAP_SIZE);
                  ((rt_uint8_t *)rmem - RT_MEMHEAP_SIZE);
@@ -678,6 +684,8 @@ void *rt_realloc(void *rmem, rt_size_t newsize)
                 rt_memcpy(new_ptr, rmem, oldsize);
                 rt_memcpy(new_ptr, rmem, oldsize);
             else
             else
                 rt_memcpy(new_ptr, rmem, newsize);
                 rt_memcpy(new_ptr, rmem, newsize);
+
+            rt_free(rmem);
         }
         }
     }
     }