]> pd.if.org Git - pdclib/blobdiff - functions/stdlib/free.c
Fix for #42 - free( NULL ) must not fail.
[pdclib] / functions / stdlib / free.c
index 632f670a44501eb2fdd7410c7c5b2f8cf4808018..4370487750ad2dbddbc71860833926f1a34de3c7 100644 (file)
@@ -1,7 +1,5 @@
 /* $Id$ */
 
-/* Release $Name$ */
-
 /* void free( void * )
 
    This file is part of the Public Domain C Library (PDCLib).
@@ -24,6 +22,10 @@ extern struct _PDCLIB_headnode_t _PDCLIB_memlist;
 
 void free( void * ptr )
 {
+    if ( ptr == NULL )
+    {
+        return;
+    }
     ptr = (void *)( (char *)ptr - sizeof( struct _PDCLIB_memnode_t ) );
     ( (struct _PDCLIB_memnode_t *)ptr )->next = NULL;
     if ( _PDCLIB_memlist.last != NULL )
@@ -41,11 +43,12 @@ void free( void * ptr )
 
 #ifdef TEST
 #include <_PDCLIB_test.h>
+#include <stdbool.h>
 
-int main()
+int main( void )
 {
-    BEGIN_TESTS;
-    /* tests covered in malloc test driver */
+    free( NULL );
+    TESTCASE( true );
     return TEST_RESULTS;
 }