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 + + * path.cc (cygwin_create_path): Free memory on error. + 2010-04-20 Corinna Vinschen * 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; }