summaryrefslogtreecommitdiff
path: root/libguile/gh_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/gh_data.c')
-rw-r--r--libguile/gh_data.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libguile/gh_data.c b/libguile/gh_data.c
index 859327cd7..2d437dbb9 100644
--- a/libguile/gh_data.c
+++ b/libguile/gh_data.c
@@ -258,9 +258,11 @@ gh_scm2chars (SCM obj, char *m)
scm_list_1 (obj));
if (m == 0)
m = (char *) malloc (len);
+ if (m != NULL)
+ memcpy (m, elts, len);
+ scm_array_handle_release (&handle);
if (m == NULL)
return NULL;
- memcpy (m, elts, len);
break;
}
else
@@ -296,9 +298,11 @@ scm2whatever (SCM obj, void *m, size_t size)
if (m == 0)
m = malloc (len * sizeof (size));
- if (m == NULL)
- return NULL;
- memcpy (m, elts, len * size);
+ if (m != NULL)
+ memcpy (m, elts, len * size);
+
+ scm_array_handle_release (&handle);
+
return m;
}