fixing malloc and realloc so it return right value

do not mix the doc over malloc and realloc. Thanks filip
<filip2307> malloc(0) -> valid buffer
<GreatLord> then I revert that change
<filip2307> realloc(<non-null pointer>, 0) -> NULL
<filip2307> realloc(NULL, 0) -> valid buffer

svn path=/trunk/; revision=22197
This commit is contained in:
Magnus Olsen 2006-06-03 17:40:23 +00:00
parent f895d5ab82
commit 4eada6f8bd

View file

@ -36,12 +36,7 @@ extern HANDLE hHeap;
*/
void* malloc(size_t _size)
{
size_t nSize;
if ( _size == 0)
return NULL;
nSize = ROUND_SIZE(_size);
size_t nSize = ROUND_SIZE(_size);
if (nSize<_size)
return NULL;
@ -65,7 +60,7 @@ void* calloc(size_t _nmemb, size_t _size)
size_t nSize = _nmemb * _size;
size_t cSize = ROUND_SIZE(nSize);
if ((_nmemb > ((size_t)-1 / _size) || (nSize == 0) || (cSize<nSize))
if ((_nmemb > ((size_t)-1 / _size) || (cSize<nSize))
return NULL;
return HeapAlloc(hHeap, HEAP_ZERO_MEMORY, cSize );
@ -78,7 +73,7 @@ void* realloc(void* _ptr, size_t _size)
{
size_t nSize;
if ( _size == 0)
if (( _size == 0) && (_ptr !=NULL)
return NULL;
nSize = ROUND_SIZE(_size);
@ -98,10 +93,7 @@ void* realloc(void* _ptr, size_t _size)
void* _expand(void* _ptr, size_t _size)
{
size_t nSize;
if ( _size == 0)
return NULL;
nSize = ROUND_SIZE(_size);
if (nSize<_size)