summaryrefslogtreecommitdiffstats
path: root/src/H5CS.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5CS.c')
-rw-r--r--src/H5CS.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/H5CS.c b/src/H5CS.c
index 6510c25..d7cb6f1 100644
--- a/src/H5CS.c
+++ b/src/H5CS.c
@@ -262,9 +262,9 @@ H5CS_copy_stack(void)
if (NULL == (new_stack->rec = HDcalloc(old_stack->nused, sizeof(const char *))))
HGOTO_ERROR(H5E_RESOURCE, H5E_CANTALLOC, NULL, "can't allocate function stack records")
- /* Copy old stack to new one, duplicating the strings */
- for (u = 0; u < old_stack->nused; u++)
- new_stack->rec[u] = HDstrdup(old_stack->rec[u]);
+ /* Copy pointers on old stack to new one */
+ /* (Strings don't need to be duplicated, they are statically allocated) */
+ HDmemcpy(new_stack->rec, old_stack->rec, sizeof(char *) * old_stack->nused);
new_stack->nused = new_stack->nalloc = old_stack->nused;
/* Set the return value */
@@ -298,11 +298,9 @@ H5CS_close_stack(H5CS_t *stack)
HDassert(stack);
/* Free stack */
- for (u = 0; u < stack->nused; u++) {
- if (stack->rec[u])
- HDfree((void *)stack->rec[u]);
- stack->rec[u] = NULL;
- } /* end for */
+ /* The function name string are statically allocated (by the compiler)
+ * and are not allocated, so there's no need to free them.
+ */
if (stack->rec) {
HDfree(stack->rec);
stack->rec = NULL;