mirror of
https://github.com/reactos/reactos.git
synced 2025-04-30 19:19:00 +00:00
Fix realloc behavior when size == 0 and ptr != NULL.
Patch by DrV, bug 2347. svn path=/trunk/; revision=27299
This commit is contained in:
parent
57e548bec4
commit
1289745bf8
1 changed files with 11 additions and 7 deletions
|
@ -72,19 +72,23 @@ void* calloc(size_t _nmemb, size_t _size)
|
|||
void* realloc(void* _ptr, size_t _size)
|
||||
{
|
||||
size_t nSize;
|
||||
|
||||
if (( _size == 0) && (_ptr !=NULL))
|
||||
|
||||
if (_ptr == NULL)
|
||||
return malloc(_size);
|
||||
|
||||
if (_size == 0)
|
||||
{
|
||||
free(_ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
nSize = ROUND_SIZE(_size);
|
||||
|
||||
/* check for integer overflow */
|
||||
if (nSize<_size)
|
||||
return NULL;
|
||||
|
||||
if (!_ptr) return malloc(_size);
|
||||
if (_size) return HeapReAlloc(hHeap, 0, _ptr, nSize);
|
||||
free(_ptr);
|
||||
return NULL;
|
||||
|
||||
return HeapReAlloc(hHeap, 0, _ptr, nSize);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue