Fix the error returned by GetLongPathNameA.
diff --git a/files/dos_fs.c b/files/dos_fs.c
index 9a05b32..3c3e702 100644
--- a/files/dos_fs.c
+++ b/files/dos_fs.c
@@ -986,7 +986,7 @@
* NOTES
* observed:
* longpath=NULL: LastError=ERROR_INVALID_PARAMETER, ret=0
- * *longpath="" or invalid: LastError=ERROR_BAD_PATHNAME, ret=0
+ * longpath="" or invalid: LastError=ERROR_BAD_PATHNAME, ret=0
*
* more observations ( with NT 3.51 (WinDD) ):
* longpath <= 8.3 -> just copy longpath to shortpath
@@ -997,7 +997,7 @@
* file is not a directory
* - the absolute/relative path of the short name is reproduced like found
* in the long name
- * - longpath and shortpath may have the same adress
+ * - longpath and shortpath may have the same address
* Peter Ganten, 1999
*/
DWORD WINAPI GetShortPathNameA( LPCSTR longpath, LPSTR shortpath,
@@ -1107,13 +1107,27 @@
/***********************************************************************
* GetLongPathNameA (KERNEL32.@)
+ *
+ * NOTES
+ * observed (Win2000):
+ * shortpath=NULL: LastError=ERROR_INVALID_PARAMETER, ret=0
+ * shortpath="": LastError=ERROR_PATH_NOT_FOUND, ret=0
*/
DWORD WINAPI GetLongPathNameA( LPCSTR shortpath, LPSTR longpath,
DWORD longlen )
{
DOS_FULL_NAME full_name;
char *p, *r, *ll, *ss;
-
+
+ if (!shortpath) {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return 0;
+ }
+ if (!shortpath[0]) {
+ SetLastError(ERROR_PATH_NOT_FOUND);
+ return 0;
+ }
+
if (!DOSFS_GetFullName( shortpath, TRUE, &full_name )) return 0;
lstrcpynA( longpath, full_name.short_name, longlen );