diff options
author | kazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-27 08:27:19 +0000 |
---|---|---|
committer | kazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-27 08:27:19 +0000 |
commit | 35259b72f20eb289f6ca0e8c1a9e368f47193420 (patch) | |
tree | 1580c98278025009dba1c380e27894a2e4e0c4cb /win32 | |
parent | 2434ad11e4f6df96a33bac95b8c1576c6d63e96a (diff) | |
download | ruby-35259b72f20eb289f6ca0e8c1a9e368f47193420.tar.gz |
* win32/win32.c (check_if_dir): fix memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32')
-rw-r--r-- | win32/win32.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/win32/win32.c b/win32/win32.c index c26d3e3cc7..310eb85340 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -5186,36 +5186,30 @@ rb_w32_uopen(const char *file, int oflag, ...) /* License: Ruby's */ static int -check_if_dir(const char *file) +check_if_wdir(const WCHAR *wfile) { - DWORD attr; - WCHAR *wfile; - - if (!(wfile = filecp_to_wstr(file, NULL))) - return FALSE; - attr = GetFileAttributesW(wfile); + DWORD 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) +check_if_dir(const char *file) { - DWORD attr = GetFileAttributesW(wfile); - if (attr == (DWORD)-1L || - !(attr & FILE_ATTRIBUTE_DIRECTORY) || - check_valid_dir(wfile)) { + WCHAR *wfile; + int ret; + + if (!(wfile = filecp_to_wstr(file, NULL))) return FALSE; - } - errno = EISDIR; - return TRUE; + ret = check_if_wdir(wfile); + free(wfile); + return ret; } /* License: Ruby's */ |