gallium: make REALLOC a bit more like realloc
authorKeith Whitwell <keith@tungstengraphics.com>
Tue, 18 Mar 2008 13:10:51 +0000 (13:10 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Tue, 18 Mar 2008 19:17:26 +0000 (19:17 +0000)
src/gallium/include/pipe/p_util.h

index ef36ce75f7dc09c8a7c6d632ce753b868db03619..c2e0f8c6a5d11e6060d69d99d910e4b49882caa5 100644 (file)
@@ -88,14 +88,16 @@ FREE( void *ptr )
 static INLINE void *
 REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
 {
-   void *new_ptr;
-   if( new_size <= old_size ) {
-      return old_ptr;
-   }
-   new_ptr = MALLOC( new_size );
-   if( new_ptr ) {
-      memcpy( new_ptr, old_ptr, old_size );
+   void *new_ptr = NULL;
+
+   if (new_size != 0) {
+      new_ptr = MALLOC( new_size );
+      
+      if( new_ptr && old_ptr ) {
+         memcpy( new_ptr, old_ptr, old_size );
+      }
    }
+
    FREE( old_ptr );
    return new_ptr;
 }