summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_disk_file.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-03-12 15:04:06 +0000
committerCorinna Vinschen <corinna@vinschen.de>2008-03-12 15:04:06 +0000
commit31812fc0bce3afa55f2e4f70411d849dac41e1aa (patch)
tree12cb59dd2592390efd96e05807f4852f12b39680 /winsup/cygwin/fhandler_disk_file.cc
parent2b2b42cf59bafffa3cd3021090c8e8636985fd48 (diff)
downloadcygnal-31812fc0bce3afa55f2e4f70411d849dac41e1aa.tar.gz
cygnal-31812fc0bce3afa55f2e4f70411d849dac41e1aa.tar.bz2
cygnal-31812fc0bce3afa55f2e4f70411d849dac41e1aa.zip
* fhandler_disk_file.cc (fhandler_disk_file::readdir_helper): Don't
copy filename twice in the non-managed case.
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index e364d9f49..061f6ea9a 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -1785,16 +1785,20 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err,
}
}
- char tmp[NAME_MAX + 1];
- sys_wcstombs (tmp, NAME_MAX + 1, fname->Buffer,
- fname->Length / sizeof (WCHAR));
if (pc.isencoded ())
- fnunmunge (de->d_name, tmp);
+ {
+ char tmp[NAME_MAX + 1];
+ sys_wcstombs (tmp, NAME_MAX + 1, fname->Buffer,
+ fname->Length / sizeof (WCHAR));
+ fnunmunge (de->d_name, tmp);
+ }
else
- strcpy (de->d_name, tmp);
- if (dir->__d_position == 0 && !strcmp (tmp, "."))
+ sys_wcstombs (de->d_name, NAME_MAX + 1, fname->Buffer,
+ fname->Length / sizeof (WCHAR));
+
+ if (dir->__d_position == 0 && !strcmp (de->d_name, "."))
dir->__flags |= dirent_saw_dot;
- else if (dir->__d_position == 1 && !strcmp (tmp, ".."))
+ else if (dir->__d_position == 1 && !strcmp (de->d_name, ".."))
dir->__flags |= dirent_saw_dot_dot;
return 0;
}