mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 467368 - Windows Mobile _wfullpath implementation doesn't handle paths with ../ correctly
This commit is contained in:
parent
e3ac859456
commit
1ad4a9a0bc
@ -338,14 +338,23 @@ MOZCE_SHUNT_API unsigned short *_wfullpath( unsigned short *absPath, const unsig
|
||||
if(absPath == NULL){
|
||||
absPath = (unsigned short *)malloc(maxLength*sizeof(unsigned short));
|
||||
}
|
||||
_wgetcwd( absPath, maxLength);
|
||||
unsigned long len = wcslen(absPath);
|
||||
if(!(absPath[len-1] == TCHAR('/') || absPath[len-1] == TCHAR('\\'))&& len< maxLength){
|
||||
absPath[len] = TCHAR('\\');
|
||||
absPath[++len] = TCHAR('\0');
|
||||
unsigned short cwd[MAX_PATH];
|
||||
if (NULL == _wgetcwd( cwd, MAX_PATH))
|
||||
return NULL;
|
||||
|
||||
unsigned long len = wcslen(cwd);
|
||||
if(!(cwd[len-1] == TCHAR('/') || cwd[len-1] == TCHAR('\\'))&& len< maxLength){
|
||||
cwd[len] = TCHAR('\\');
|
||||
cwd[++len] = TCHAR('\0');
|
||||
}
|
||||
if(len+wcslen(relPath) < maxLength){
|
||||
return wcscat(absPath,relPath);
|
||||
#if (_WIN32_WCE > 300)
|
||||
if ( 0 < CeGetCanonicalPathName(wcscat(cwd,relPath), absPath, maxLength, 0) )
|
||||
return absPath;
|
||||
#else
|
||||
#error Need CeGetCanonicalPathName to build.
|
||||
// NO ACTUAL CeGetCanonicalPathName function in earlier versions of WinCE
|
||||
#endif
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user