summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2013-03-21 14:04:50 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2013-03-21 14:04:50 (GMT)
commite7ced517bc9fab1e13962231e53ef5c107daf88e (patch)
tree5acfaeb946fb38725676b0a078cb2500bad1f49b
parenta0ec9c282b3dbabec9d1f46e86c37336b9cd490b (diff)
downloadhdf5-e7ced517bc9fab1e13962231e53ef5c107daf88e.zip
hdf5-e7ced517bc9fab1e13962231e53ef5c107daf88e.tar.gz
hdf5-e7ced517bc9fab1e13962231e53ef5c107daf88e.tar.bz2
[svn-r23411] HDDFV-8322: Free allocations in command line parsing.
Tested: local linux
-rw-r--r--tools/h5copy/h5copy.c54
1 files changed, 18 insertions, 36 deletions
diff --git a/tools/h5copy/h5copy.c b/tools/h5copy/h5copy.c
index b2ad9d0..3fb5701 100644
--- a/tools/h5copy/h5copy.c
+++ b/tools/h5copy/h5copy.c
@@ -36,6 +36,11 @@ static struct long_options l_opts[] = {
{ "version", no_arg, 'V' },
{ NULL, 0, '\0' }
};
+char *fname_src = NULL;
+char *fname_dst = NULL;
+char *oname_src = NULL;
+char *oname_dst = NULL;
+char *str_flag = NULL;
/*-------------------------------------------------------------------------
* Function: leave
@@ -54,6 +59,17 @@ static struct long_options l_opts[] = {
static void
leave(int ret)
{
+ if (fname_src)
+ HDfree(fname_src);
+ if (fname_dst)
+ HDfree(fname_dst);
+ if (oname_dst)
+ HDfree(oname_dst);
+ if (oname_src)
+ HDfree(oname_src);
+ if (str_flag)
+ HDfree(str_flag);
+
h5tools_close();
HDexit(ret);
}
@@ -201,11 +217,6 @@ main (int argc, const char *argv[])
{
hid_t fid_src = -1;
hid_t fid_dst = -1;
- char *fname_src = NULL;
- char *fname_dst = NULL;
- char *oname_src = NULL;
- char *oname_dst = NULL;
- char *str_flag = NULL;
unsigned flag = 0;
unsigned verbose = 0;
unsigned parents = 0;
@@ -339,8 +350,6 @@ main (int argc, const char *argv[])
if (fid_src==-1)
{
error_msg("Could not open input file <%s>...Exiting\n", fname_src);
- if (fname_src)
- HDfree(fname_src);
leave(EXIT_FAILURE);
}
@@ -360,10 +369,6 @@ main (int argc, const char *argv[])
if (fid_dst==-1)
{
error_msg("Could not open output file <%s>...Exiting\n", fname_dst);
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
leave(EXIT_FAILURE);
}
@@ -484,18 +489,7 @@ main (int argc, const char *argv[])
if (H5Fclose(fid_dst)<0)
goto error;
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
- if (oname_dst)
- HDfree(oname_dst);
- if (oname_src)
- HDfree(oname_src);
-
- h5tools_close();
-
- return EXIT_SUCCESS;
+ leave(EXIT_SUCCESS);
error:
printf("Error in copy...Exiting\n");
@@ -510,19 +504,7 @@ error:
H5Fclose(fid_src);
H5Fclose(fid_dst);
} H5E_END_TRY;
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
- if (oname_dst)
- HDfree(oname_dst);
- if (oname_src)
- HDfree(oname_src);
- if (str_flag)
- HDfree(str_flag);
-
- h5tools_close();
- return EXIT_FAILURE;
+ leave(EXIT_FAILURE);
}