diff options
author | Larry Knox <lrknox@hdfgroup.org> | 2015-02-28 17:00:03 (GMT) |
---|---|---|
committer | Larry Knox <lrknox@hdfgroup.org> | 2015-02-28 17:00:03 (GMT) |
commit | ac290b5e45412a0a93fde620490d703c773d27d4 (patch) | |
tree | 5f092da8f14390a154ae169a7b1b82e526f665ee /src/H5MM.c | |
parent | 7462a7ef1c3542b8812c8da86e79b15ce22d21cb (diff) | |
download | hdf5-ac290b5e45412a0a93fde620490d703c773d27d4.zip hdf5-ac290b5e45412a0a93fde620490d703c773d27d4.tar.gz hdf5-ac290b5e45412a0a93fde620490d703c773d27d4.tar.bz2 |
[svn-r26331] Revert checking r 26327&8, which added new code and test that fails on solaris and macs.
Tested h5committest + emu and quail.
Diffstat (limited to 'src/H5MM.c')
-rw-r--r-- | src/H5MM.c | 114 |
1 files changed, 52 insertions, 62 deletions
@@ -31,107 +31,93 @@ #include "H5Eprivate.h" #include "H5MMprivate.h" +#ifndef NDEBUG /*------------------------------------------------------------------------- - * Function: H5MM_malloc + * Function: H5MM_malloc * - * Purpose: Similar to the C89 version of malloc(). + * Purpose: Just like the POSIX version of malloc(3). This routine + * specifically checks for allocations of 0 bytes and fails + * in that case. This routine is not called when NDEBUG is + * defined. * - * On size of 0, we return a NULL pointer instead of the - * standard-allowed 'special' pointer since that's more - * difficult to check as a return value. This is still - * considered an error condition since allocations of zero - * bytes usually indicate problems. - * - * Return: Success: Pointer new memory + * Return: Success: Ptr to new memory * - * Failure: NULL + * Failure: NULL * - * Programmer: Quincey Koziol - * Nov 8 2003 + * Programmer: Quincey Koziol + * koziol@ncsa.uiuc.edu + * Nov 8 2003 + * + * Modifications: * *------------------------------------------------------------------------- */ void * H5MM_malloc(size_t size) { - void *ret_value; - - HDassert(size); - /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */ FUNC_ENTER_NOAPI_NOINIT_NOERR - if(size) - ret_value = HDmalloc(size); - else - ret_value = NULL; + HDassert(size); - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(HDmalloc(size)); } /* end H5MM_malloc() */ /*------------------------------------------------------------------------- - * Function: H5MM_calloc - * - * Purpose: Similar to the C89 version of calloc(), except this - * routine just takes a 'size' parameter. - * - * On size of 0, we return a NULL pointer instead of the - * standard-allowed 'special' pointer since that's more - * difficult to check as a return value. This is still - * considered an error condition since allocations of zero - * bytes usually indicate problems. + * Function: H5MM_calloc * + * Purpose: Similar to the POSIX version of calloc(3), except this routine + * just takes a 'size' parameter. This routine + * specifically checks for allocations of 0 bytes and fails + * in that case. This routine is not called when NDEBUG is + * defined. * - * Return: Success: Pointer new memory + * Return: Success: Ptr to new memory * - * Failure: NULL + * Failure: NULL * * Programmer: Quincey Koziol - * Nov 8 2003 + * koziol@ncsa.uiuc.edu + * Nov 8 2003 + * + * Modifications: * *------------------------------------------------------------------------- */ void * H5MM_calloc(size_t size) { - void *ret_value; - - HDassert(size); - /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */ FUNC_ENTER_NOAPI_NOINIT_NOERR - if(size) - ret_value = HDcalloc((size_t)1, size); - else - ret_value = NULL; + HDassert(size); - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(HDcalloc(1,size)); } /* end H5MM_calloc() */ +#endif /* NDEBUG */ /*------------------------------------------------------------------------- - * Function: H5MM_realloc - * - * Purpose: Similar semantics as C89's realloc(). Specifically, the - * following calls are equivalent: + * Function: H5MM_realloc * - * H5MM_realloc(NULL, size) <==> H5MM_malloc(size) - * H5MM_realloc(ptr, 0) <==> H5MM_xfree(ptr) - * H5MM_realloc(NULL, 0) <==> NULL + * Purpose: Just like the POSIX version of realloc(3). Specifically, the + * following calls are equivalent * - * Note that the (NULL, 0) combination is undefined behavior - * in the C standard. + * H5MM_realloc (NULL, size) <==> H5MM_malloc (size) + * H5MM_realloc (ptr, 0) <==> H5MM_xfree (ptr) + * H5MM_realloc (NULL, 0) <==> NULL * - * Return: Success: Ptr to new memory if size > 0 - * NULL if size is zero + * Return: Success: Ptr to new memory or NULL if the memory + * was freed or HDrealloc couldn't allocate + * memory. * - * Failure: NULL (input buffer is unchanged on failure) + * Failure: NULL * - * Programmer: Robb Matzke - * Jul 10 1997 + * Programmer: Robb Matzke + * matzke@llnl.gov + * Jul 10 1997 * *------------------------------------------------------------------------- */ @@ -143,12 +129,16 @@ H5MM_realloc(void *mem, size_t size) /* Use FUNC_ENTER_NOAPI_NOINIT_NOERR here to avoid performance issues */ FUNC_ENTER_NOAPI_NOINIT_NOERR - HDassert(mem || size); - - if(NULL == mem && 0 == size) - ret_value = NULL; /* Not defined in the standard, return NULL */ + if(NULL == mem) { + if(0 == size) + ret_value = NULL; + else + ret_value = H5MM_malloc(size); + } /* end if */ + else if(0 == size) + ret_value = H5MM_xfree(mem); else - ret_value = HDrealloc(mem, size); + ret_value = HDrealloc(mem, size); FUNC_LEAVE_NOAPI(ret_value) } /* end H5MM_realloc() */ |