From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcrt/dir.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 2c2c25b0e9d..6065e371b46 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -821,19 +821,23 @@ wchar_t* CDECL _wgetcwd(wchar_t * buf, int size) int dir_len = GetCurrentDirectoryW(MAX_PATH,dir);
if (dir_len < 1) - return NULL; /* FIXME: Real return value untested */ + return NULL;
if (!buf) { if (size <= dir_len) size = dir_len + 1; - if (!(buf = malloc( size * sizeof(WCHAR) ))) return NULL; + if (!(buf = malloc( size * sizeof(WCHAR) ))) + { + *_errno() = ENOMEM; + return NULL; + } } if (dir_len >= size) { *_errno() = ERANGE; return NULL; /* buf too small */ } - wcscpy(buf,dir); + wcscpy_s(buf, size, dir); return buf; }