summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVailin Choi <vchoi@hdfgroup.org>2010-11-18 19:11:51 (GMT)
committerVailin Choi <vchoi@hdfgroup.org>2010-11-18 19:11:51 (GMT)
commit64a7862ffef32f17f8ec6632c201c99a233f419f (patch)
tree4a8dc9f80c0b8f6b72a955ba89cad501079034a0 /src
parent116391d56a1142b08c4c02eb13ed8e4598af507b (diff)
downloadhdf5-64a7862ffef32f17f8ec6632c201c99a233f419f.zip
hdf5-64a7862ffef32f17f8ec6632c201c99a233f419f.tar.gz
hdf5-64a7862ffef32f17f8ec6632c201c99a233f419f.tar.bz2
[svn-r19824] 1. Made fixes as in rev #19813 in trunk:
a) Add comments to test_4() in test/external.c about the name "/ link". b) Fix one memory leak in src/H5Lexternal.c: free memory pointed to by tmp_env_prefix for HDF5_EXT_PREFIX case. 3. Made changes for bug #1930 as in rev #19783, #19781 in trunk. 4. Made corresponding CMake changes as in rev #19782 in trunk.
Diffstat (limited to 'src')
-rw-r--r--src/H5Lexternal.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/H5Lexternal.c b/src/H5Lexternal.c
index 9cab8cf..4700fee 100644
--- a/src/H5Lexternal.c
+++ b/src/H5Lexternal.c
@@ -188,6 +188,9 @@ done:
* Otherwise, the file access property retrieved from H5Pget_elink_fapl()
* is used to H5F_open() the target file.
*
+ * Vailin Choi; Nov 2010
+ * Free memory pointed to by tmp_env_prefix for HDF5_EXT_PREFIX case.
+ *
*-------------------------------------------------------------------------
*/
static hid_t
@@ -343,9 +346,9 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
char *env_prefix;
if(NULL != (env_prefix = HDgetenv("HDF5_EXT_PREFIX"))) {
- char *tmp_env_prefix;
+ char *tmp_env_prefix, *saved_env;
- if(NULL == (tmp_env_prefix = H5MM_strdup(env_prefix)))
+ if(NULL == (saved_env = tmp_env_prefix = H5MM_strdup(env_prefix)))
HGOTO_ERROR(H5E_LINK, H5E_NOSPACE, FAIL, "memory allocation failed")
while((tmp_env_prefix) && (*tmp_env_prefix)) {
@@ -353,8 +356,10 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
out_prefix_name = H5L_getenv_prefix_name(&tmp_env_prefix/*in,out*/);
if(out_prefix_name && (*out_prefix_name)) {
- if(H5L_build_name(out_prefix_name, temp_file_name, &full_name/*out*/) < 0)
+ if(H5L_build_name(out_prefix_name, temp_file_name, &full_name/*out*/) < 0) {
+ saved_env = (char *)H5MM_xfree(saved_env);
HGOTO_ERROR(H5E_LINK, H5E_CANTGET, FAIL, "can't prepend prefix to filename")
+ }
ext_file = H5F_open(full_name, intent, H5P_FILE_CREATE_DEFAULT, fapl_id, H5AC_dxpl_id);
full_name = (char *)H5MM_xfree(full_name);
@@ -363,6 +368,7 @@ H5L_extern_traverse(const char UNUSED *link_name, hid_t cur_group,
H5E_clear_stack(NULL);
} /* end if */
} /* end while */
+ saved_env = (char *)H5MM_xfree(saved_env);
} /* end if */
} /* end if */