summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorkazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-27 08:27:19 +0000
committerkazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-03-27 08:27:19 +0000
commit35259b72f20eb289f6ca0e8c1a9e368f47193420 (patch)
tree1580c98278025009dba1c380e27894a2e4e0c4cb /win32
parent2434ad11e4f6df96a33bac95b8c1576c6d63e96a (diff)
* 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.c26
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 */