Fix realloc behavior when size == 0 and ptr != NULL.

Patch by DrV, bug 2347.

svn path=/trunk/; revision=27299
This commit is contained in:
Andrew Munger 2007-06-28 07:05:24 +00:00
parent 57e548bec4
commit 1289745bf8

View file

@ -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);
}
/*