From ccc580f408c5f3fc09e95318a7e2a4e816d7e986 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 9 Jun 2004 14:18:14 +0000 Subject: [PATCH] Fixed memory leak on error in win32's opendir() emulation. (Patch by Wez) --- win32/readdir.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/win32/readdir.c b/win32/readdir.c index e33d19bde5b..6aaafced442 100644 --- a/win32/readdir.c +++ b/win32/readdir.c @@ -37,14 +37,17 @@ DIR *opendir(const char *dir) dp = (DIR *) malloc(sizeof(DIR)); dp->offset = 0; dp->finished = 0; - dp->dir = strdup(dir); if ((handle = _findfirst(filespec, &(dp->fileinfo))) < 0) { - if (errno == ENOENT) + if (errno == ENOENT) { dp->finished = 1; - else + } else { + free(dp); + free(filespec); return NULL; + } } + dp->dir = strdup(dir); dp->handle = handle; free(filespec);