msvcrt: fix realloc()
Dimitrie O. Paun
dpaun at rogers.com
Thu Nov 20 14:22:17 CST 2003
ChangeLog
Fix realloc() to match the documented behaviour.
Add a few simple tests for it.
Index: dlls/msvcrt/heap.c
===================================================================
RCS file: /var/cvs/wine/dlls/msvcrt/heap.c,v
retrieving revision 1.13
diff -u -r1.13 heap.c
--- dlls/msvcrt/heap.c 17 Sep 2002 18:32:53 -0000 1.13
+++ dlls/msvcrt/heap.c 20 Nov 2003 06:29:28 -0000
@@ -281,5 +281,8 @@
*/
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;
}
Index: dlls/msvcrt/tests/Makefile.in
===================================================================
RCS file: /var/cvs/wine/dlls/msvcrt/tests/Makefile.in,v
retrieving revision 1.3
diff -u -r1.3 Makefile.in
--- dlls/msvcrt/tests/Makefile.in 24 Sep 2003 18:49:45 -0000 1.3
+++ dlls/msvcrt/tests/Makefile.in 20 Nov 2003 19:27:37 -0000
@@ -9,6 +9,7 @@
CTESTS = \
cpp.c \
file.c \
+ mem.c \
scanf.c
@MAKE_TEST_RULES@
--- /dev/null 2003-01-30 05:24:37.000000000 -0500
+++ dlls/msvcrt/tests/mem.c 2003-11-20 14:32:32.000000000 -0500
@@ -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(mem)
+{
+ test_realloc();
+}
--
Dimi.
More information about the wine-patches
mailing list