diff --git a/ChangeLog b/ChangeLog index 5c011f243f..d354f00ae2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 27 17:08:08 2012 Kazuhiro NISHIYAMA + + * win32/win32.c (check_if_dir): fix memory leak. + Tue Mar 27 13:13:51 2012 Nobuyoshi Nakada * string.c (str_new_empty): should copy also the encoding as an diff --git a/win32/win32.c b/win32/win32.c index c26d3e3cc7..310eb85340 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -5184,26 +5184,6 @@ rb_w32_uopen(const char *file, int oflag, ...) return ret; } -/* License: Ruby's */ -static int -check_if_dir(const char *file) -{ - DWORD attr; - WCHAR *wfile; - - if (!(wfile = filecp_to_wstr(file, NULL))) - return FALSE; - attr = GetFileAttributesW(wfile); - if (attr == (DWORD)-1L || - !(attr & FILE_ATTRIBUTE_DIRECTORY) || - check_valid_dir(wfile)) { - return FALSE; - } - free(wfile); - errno = EISDIR; - return TRUE; -} - /* License: Ruby's */ static int check_if_wdir(const WCHAR *wfile) @@ -5218,6 +5198,20 @@ check_if_wdir(const WCHAR *wfile) return TRUE; } +/* License: Ruby's */ +static int +check_if_dir(const char *file) +{ + WCHAR *wfile; + int ret; + + if (!(wfile = filecp_to_wstr(file, NULL))) + return FALSE; + ret = check_if_wdir(wfile); + free(wfile); + return ret; +} + /* License: Ruby's */ int rb_w32_open(const char *file, int oflag, ...)