Imported from libpng-1.4.0beta14.tar
diff --git a/pngmem.c b/pngmem.c
index 1c87f60..81779a3 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * Last changed in libpng 1.4.0 July 13, 2006
+ * Last changed in libpng 1.4.0 November 14, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -137,6 +137,9 @@
    png_voidp ret;
 #endif /* PNG_USER_MEM_SUPPORTED */
 
+   if (png_ptr == NULL || size == 0)
+      return (NULL);
+
 #ifdef PNG_MAX_MALLOC_64K
    if (size > (png_alloc_size_t)65536L)
    {
@@ -293,6 +296,8 @@
 {
 #endif /* PNG_USER_MEM_SUPPORTED */
 
+   if(png_ptr == NULL) return;
+
    if (png_ptr->offset_table != NULL)
    {
       int i;
@@ -493,6 +498,7 @@
 png_malloc_warn(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ptr;
+   if(png_ptr == NULL) return (NULL);
    png_uint_32 save_flags=png_ptr->flags;
 
    png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
@@ -509,9 +515,11 @@
 png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
   malloc_fn, png_free_ptr free_fn)
 {
+   if(png_ptr != NULL) {
    png_ptr->mem_ptr = mem_ptr;
    png_ptr->malloc_fn = malloc_fn;
    png_ptr->free_fn = free_fn;
+   }
 }
 
 /* This function returns a pointer to the mem_ptr associated with the user
@@ -521,6 +529,7 @@
 png_voidp PNGAPI
 png_get_mem_ptr(png_structp png_ptr)
 {
+   if(png_ptr == NULL) return (NULL);
    return ((png_voidp)png_ptr->mem_ptr);
 }
 #endif /* PNG_USER_MEM_SUPPORTED */