summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/path.cc11
2 files changed, 11 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index db753dd3e..4c2fe767c 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-20 Christopher Faylor <me+cygwin@cgf.cx>
+
+ * path.cc (cygwin_create_path): Free memory on error.
+
2010-04-20 Corinna Vinschen <corinna@vinschen.de>
* cygheap.h (struct init_cygheap): Add rlim_core member.
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 9e57a0f15..f8f65d624 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2812,11 +2812,14 @@ cygwin_create_path (cygwin_conv_path_t what, const void *from)
void *to;
ssize_t size = cygwin_conv_path (what, from, NULL, 0);
if (size <= 0)
- return NULL;
- if (!(to = malloc (size)))
- return NULL;
+ to = NULL;
+ else if (!(to = malloc (size)))
+ to = NULL;
if (cygwin_conv_path (what, from, to, size) == -1)
- return NULL;
+ {
+ free (to);
+ to = NULL;
+ }
return to;
}