summaryrefslogtreecommitdiffstats
path: root/src/H5MM.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-11-08 15:32:53 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-11-08 15:32:53 (GMT)
commit0497e80b5017f0292a3232cfec4e268f9776d137 (patch)
treeadf245ba8f035a20cb91e688a2529e439674634c /src/H5MM.c
parentdd969f1eadfd2cd500f3f44415b85cfea7216794 (diff)
downloadhdf5-0497e80b5017f0292a3232cfec4e268f9776d137.zip
hdf5-0497e80b5017f0292a3232cfec4e268f9776d137.tar.gz
hdf5-0497e80b5017f0292a3232cfec4e268f9776d137.tar.bz2
[svn-r7829] Purpose:
Bug fix & code cleanup Description: Allowing the library to call malloc with a size of 0 bytes causes problems for some users, so we check for allocations of 0 bytes and disallow them now. Cleaned up some code which could call malloc with 0 size. Changed some code calling HDmalloc directly to call H5MM_malloc(), which allows us to check for 0 sized allocations. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
Diffstat (limited to 'src/H5MM.c')
-rw-r--r--src/H5MM.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/H5MM.c b/src/H5MM.c
index 371f292..9701bb9 100644
--- a/src/H5MM.c
+++ b/src/H5MM.c
@@ -33,6 +33,73 @@
static int interface_initialize_g = 0;
#define INTERFACE_INIT NULL
+#ifndef NDEBUG
+
+/*-------------------------------------------------------------------------
+ * Function: H5MM_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.
+ *
+ * Return: Success: Ptr to new memory
+ *
+ * Failure: NULL
+ *
+ * Programmer: Quincey Koziol
+ * koziol@ncsa.uiuc.edu
+ * Nov 8 2003
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+void *
+H5MM_malloc(size_t size)
+{
+ /* Use FUNC_ENTER_NOINIT here to avoid performance issues */
+ FUNC_ENTER_NOINIT(H5MM_malloc);
+
+ assert(size);
+
+ FUNC_LEAVE_NOAPI(HDmalloc(size));
+} /* end H5MM_malloc() */
+
+
+/*-------------------------------------------------------------------------
+ * 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: Ptr to new memory
+ *
+ * Failure: NULL
+ *
+ * Programmer: Quincey Koziol
+ * koziol@ncsa.uiuc.edu
+ * Nov 8 2003
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+void *
+H5MM_calloc(size_t size)
+{
+ /* Use FUNC_ENTER_NOINIT here to avoid performance issues */
+ FUNC_ENTER_NOINIT(H5MM_calloc);
+
+ assert(size);
+
+ FUNC_LEAVE_NOAPI(HDcalloc(1,size));
+} /* end H5MM_calloc() */
+#endif /* NDEBUG */
+
/*-------------------------------------------------------------------------
* Function: H5MM_realloc