Fix realloc() to match the documented behaviour.

Add a few simple tests for it.
This commit is contained in:
Dimitrie O. Paun 2003-11-20 23:41:13 +00:00 committed by Alexandre Julliard
parent 9e85bf3f87
commit c5150fb682
4 changed files with 47 additions and 1 deletions

View File

@ -281,5 +281,8 @@ void* MSVCRT_malloc(MSVCRT_size_t size)
*/
void* MSVCRT_realloc(void* ptr, MSVCRT_size_t size)
{
return HeapReAlloc(GetProcessHeap(), 0, ptr, size);
if (!ptr) return MSVCRT_malloc(size);
if (size) return HeapReAlloc(GetProcessHeap(), 0, ptr, size);
MSVCRT_free(ptr);
return NULL;
}

View File

@ -1,6 +1,7 @@
Makefile
cpp.ok
file.ok
heap.ok
msvcrt_test.exe.spec.c
scanf.ok
testlist.c

View File

@ -9,6 +9,7 @@ EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt
CTESTS = \
cpp.c \
file.c \
heap.c \
scanf.c
@MAKE_TEST_RULES@

41
dlls/msvcrt/tests/heap.c Normal file
View File

@ -0,0 +1,41 @@
/*
* Unit test suite for memory functions
*
* Copyright 2003 Dimitrie O. Paun
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "wine/test.h"
#include <stdlib.h>
static void test_realloc( void )
{
void *mem = NULL;
mem = realloc(mem, 10);
ok(mem != NULL, "memory not allocated");
mem = realloc(mem, 20);
ok(mem != NULL, "memory not reallocated");
mem = realloc(mem, 0);
ok(mem == NULL, "memory nto freed");
}
START_TEST(heap)
{
test_realloc();
}