Kai Tietz <ktiet...@googlemail.com> writes: > diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c > index 44802b3..3b9e3c7 100644 > --- a/dlls/msvcrt/dir.c > +++ b/dlls/msvcrt/dir.c > @@ -365,14 +365,25 @@ int CDECL MSVCRT__chdrive(int newdrive) > { > WCHAR buffer[] = {'A', ':', 0}; > > + if (newdrive < 1 || newdrive > 31) > + { > + *MSVCRT___doserrno () = ERROR_INVALID_DRIVE; > + *MSVCRT__errno () = MSVCRT_EACCES; > + return -1; > + } > buffer[0] += newdrive - 1; > - if (!SetCurrentDirectoryW( buffer )) > + > + _lock (_ENV_LOCK); > + > + if (!SetCurrentDirectoryW (buffer)) > { > - msvcrt_set_errno(GetLastError()); > - if (newdrive <= 0) > - *MSVCRT__errno() = MSVCRT_EACCES; > + msvcrt_set_errno (GetLastError ()); > + _unlock (_ENV_LOCK); > return -1; > } > + > + _unlock (_ENV_LOCK); > + > return 0; > }
Please add test cases at least for the error values. -- Alexandre Julliard julli...@winehq.org