summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c8e9160)
raw | patch | inline | side by side (parent: c8e9160)
author | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Wed, 23 Nov 2011 08:53:49 +0000 (08:53 +0000) | ||
committer | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Wed, 23 Nov 2011 08:53:49 +0000 (08:53 +0000) |
git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.4/program@2218 a5681a0c-68f1-0310-ab6d-d61299d08faa
src/rrd_utils.c | patch | blob | history |
diff --git a/src/rrd_utils.c b/src/rrd_utils.c
index 31e53e2a6684d638516db02e911abf084bd1471f..94c86558e3217b6ecf579b83bc87fc22886b7d15 100644 (file)
--- a/src/rrd_utils.c
+++ b/src/rrd_utils.c
return -1;
#ifndef _MSC_VER
- base_dir = dirname(pathname_copy);
+ /* the data pointedd too by dirname might change too (bsd) */
+ if (NULL == (base_dir = strdup(dirname(pathname_copy)))) {
+ free(pathname_copy);
+ return -1;
+ }
#else
- _splitpath(pathname_copy, NULL, base_dir, NULL, NULL);
+ _splitpath(pathname_copy, NULL, base_dir, NULL, NULL);
#endif
if (0 != rrd_mkdir_p(base_dir, mode)) {
int orig_errno = errno;
free(pathname_copy);
+#ifndef _MSC_VER
+ free(base_dir);
+#endif
errno = orig_errno;
return -1;
}
free(pathname_copy);
+#ifndef _MSC_VER
+ free(base_dir);
+#endif
/* keep errno as set by mkdir() */
#ifdef _MSC_VER
- if (0 != mkdir(pathname))
+ if (0 != mkdir(pathname))
return -1;
#else
if (0 != mkdir(pathname, mode))