Permalink
Browse files

updated for version 7.4.175

Problem:    When a wide library function fails, falling back to the non-wide
	    function may do the wrong thing.
Solution:   Check the platform, when the wide function is supported don't fall
	    back to the non-wide function. (Ken Takata)
  • Loading branch information...
1 parent 40c3ee3 commit 58e5a8cc608997786851576195e4d9aff1d973e9 @brammool brammool committed Feb 11, 2014
Showing with 15 additions and 8 deletions.
  1. +4 −5 src/os_mswin.c
  2. +9 −3 src/os_win32.c
  3. +2 −0 src/version.c
View
@@ -648,7 +648,7 @@ vim_stat(const char *name, struct stat *stp)
{
n = wstat_symlink_aware(wp, (struct _stat *)stp);
vim_free(wp);
- if (n >= 0)
+ if (n >= 0 || g_PlatformId == VER_PLATFORM_WIN32_NT)
return n;
/* Retry with non-wide function (for Windows 98). Can't use
* GetLastError() here and it's unclear what errno gets set to if
@@ -815,8 +815,8 @@ mch_chdir(char *path)
{
n = _wchdir(p);
vim_free(p);
- if (n == 0)
- return 0;
+ if (n == 0 || g_PlatformId == VER_PLATFORM_WIN32_NT)
+ return n;
/* Retry with non-wide function (for Windows 98). */
}
}
@@ -1942,8 +1942,7 @@ mch_resolve_shortcut(char_u *fname)
shortcut_errorw:
vim_free(p);
- if (hr == S_OK)
- goto shortcut_end;
+ goto shortcut_end;
}
}
/* Retry with non-wide function (for Windows 98). */
View
@@ -2877,6 +2877,8 @@ mch_get_user_name(
return OK;
}
}
+ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
+ return FAIL;
/* Retry with non-wide function (for Windows 98). */
}
#endif
@@ -2917,6 +2919,8 @@ mch_get_host_name(
return;
}
}
+ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
+ return;
/* Retry with non-wide function (for Windows 98). */
}
#endif
@@ -2966,6 +2970,8 @@ mch_dirname(
return OK;
}
}
+ else if (GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
+ return FAIL;
/* Retry with non-wide function (for Windows 98). */
}
#endif
@@ -3006,7 +3012,7 @@ mch_setperm(char_u *name, long perm)
{
n = _wchmod(p, perm);
vim_free(p);
- if (n == -1 && GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
+ if (n == -1 && g_PlatformId == VER_PLATFORM_WIN32_NT)
return FAIL;
/* Retry with non-wide function (for Windows 98). */
}
@@ -6048,7 +6054,7 @@ mch_open(char *name, int flags, int mode)
{
f = _wopen(wn, flags, mode);
vim_free(wn);
- if (f >= 0)
+ if (f >= 0 || g_PlatformId == VER_PLATFORM_WIN32_NT)
return f;
/* Retry with non-wide function (for Windows 98). Can't use
* GetLastError() here and it's unclear what errno gets set to if
@@ -6099,7 +6105,7 @@ mch_fopen(char *name, char *mode)
_set_fmode(oldMode);
# endif
- if (f != NULL)
+ if (f != NULL || g_PlatformId == VER_PLATFORM_WIN32_NT)
return f;
/* Retry with non-wide function (for Windows 98). Can't use
* GetLastError() here and it's unclear what errno gets set to if
View
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 175,
+/**/
174,
/**/
173,

0 comments on commit 58e5a8c

Please sign in to comment.