From: Piotr Caban piotr@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58363 --- dlls/msvcrt/dir.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 324e3096c72..d8654f48611 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -839,10 +839,14 @@ char* CDECL _getdcwd(int drive, char * buf, int size)
if (!_wgetdcwd(drive, dirW, ARRAY_SIZE(dirW))) return NULL;
- if (!buf) return astrdupw_utf8(dirW); len = convert_wcs_to_acp_utf8(dirW, NULL, 0); if (!len) return NULL; - if (len > size) + if (!buf) + { + if (size < len) size = len; + if (!(buf = malloc(size))) return NULL; + } + else if (len > size) { *_errno() = ERANGE; return NULL;