diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/file.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/file.c b/src/file.c index ebc1e1392..7868eafaf 100644 --- a/src/file.c +++ b/src/file.c @@ -154,12 +154,15 @@ static mrb_value mrb_file_dirname(mrb_state *mrb, mrb_value klass) { #if defined(_WIN32) || defined(_WIN64) - char dname[_MAX_DIR]; + char dname[_MAX_DIR], vname[_MAX_DRIVE]; + char buffer[_MAX_DRIVE + _MAX_DIR]; char *path; mrb_value s; mrb_get_args(mrb, "S", &s); path = mrb_str_to_cstr(mrb, s); - _splitpath((const char*)path, NULL, dname, NULL, NULL); + _splitpath((const char*)path, vname, dname, NULL, NULL); + sprintf_s(buffer, _MAX_DRIVE + _MAX_DIR, "%s%s", vname, dname); + return mrb_str_new_cstr(mrb, buffer); #else char *dname, *path; mrb_value s; |
