windows: Workaround for WinXP systems.

(transplanted from c8f3bbd689d6b71b84c11db74275ea3d56fef961)
This commit is contained in:
Ryan C. Gordon 2019-03-18 13:36:16 -04:00
parent 5cbb460bcd
commit 6b0839051f
1 changed files with 10 additions and 1 deletions

View File

@ -572,11 +572,20 @@ char *__PHYSFS_platformCalcUserDir(void)
/*
* Should fail. Will write the size of the profile path in
* psize. Also note that the second parameter can't be
* NULL or the function fails.
* NULL or the function fails on Windows XP, but has to be NULL on
* Windows 10 or it will fail. :(
*/
rc = pGetDir(accessToken, NULL, &psize);
GOTO_IF(rc, PHYSFS_ERR_OS_ERROR, done); /* should have failed! */
if (psize == 0) /* probably on Windows XP, try a different way. */
{
char x = 0;
rc = pGetDir(accessToken, &x, &psize);
GOTO_IF(rc, PHYSFS_ERR_OS_ERROR, done); /* should have failed! */
GOTO_IF(!psize, PHYSFS_ERR_OS_ERROR, done); /* Uhoh... */
} /* if */
/* Allocate memory for the profile directory */
wstr = (LPWSTR) __PHYSFS_smallAlloc((psize + 1) * sizeof (WCHAR));
if (wstr != NULL)