зеркало из https://github.com/mozilla/gecko-dev.git
Bug 478732 nsLocalFileWin/OS2.cpp's InitWithPath is inefficient r=bsmedberg
This commit is contained in:
Родитель
ff48472fea
Коммит
13d0229afc
|
@ -705,30 +705,18 @@ nsLocalFile::InitWithNativePath(const nsACString &filePath)
|
|||
|
||||
// just do a sanity check. if it has any forward slashes, it is not
|
||||
// a Native path. Also, it must have a colon at after the first char.
|
||||
|
||||
char *path = nsnull;
|
||||
PRInt32 pathLen = 0;
|
||||
|
||||
if ( ( (secondChar == ':') && !FindCharInReadable('/', begin, end) ) || // normal path
|
||||
( (firstChar == '\\') && (secondChar == '\\') ) ) // network path
|
||||
{
|
||||
// This is a native path
|
||||
path = ToNewCString(filePath);
|
||||
pathLen = filePath.Length();
|
||||
}
|
||||
|
||||
if (path == nsnull)
|
||||
if (FindCharInReadable('/', begin, end))
|
||||
return NS_ERROR_FILE_UNRECOGNIZED_PATH;
|
||||
|
||||
// kill any trailing '\' provided it isn't the second char of DBCS
|
||||
PRInt32 len = pathLen - 1;
|
||||
if (path[len] == '\\' && !::isleadbyte(path[len-1]))
|
||||
{
|
||||
path[len] = '\0';
|
||||
pathLen = len;
|
||||
}
|
||||
if (secondChar != ':' && (secondChar != '\\' || firstChar != '\\'))
|
||||
return NS_ERROR_FILE_UNRECOGNIZED_PATH;
|
||||
|
||||
mWorkingPath = filePath;
|
||||
// kill any trailing '\' provided it isn't the second char of DBCS
|
||||
PRInt32 len = mWorkingPath.Length() - 1;
|
||||
if (mWorkingPath[len] == '\\' && !::isleadbyte(mWorkingPath[len - 1]))
|
||||
mWorkingPath.Truncate(len);
|
||||
|
||||
mWorkingPath.Adopt(path, pathLen);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -900,40 +900,21 @@ nsLocalFile::InitWithPath(const nsAString &filePath)
|
|||
|
||||
// just do a sanity check. if it has any forward slashes, it is not a Native path
|
||||
// on windows. Also, it must have a colon at after the first char.
|
||||
|
||||
PRUnichar *path = nsnull;
|
||||
PRInt32 pathLen = 0;
|
||||
|
||||
if ((
|
||||
!FindCharInReadable(L'/', begin, end) ) //normal path
|
||||
#ifndef WINCE
|
||||
&& (secondChar == L':') || // additional normal path condition
|
||||
(secondChar == L'\\') && // addtional network path condition
|
||||
#else
|
||||
||
|
||||
#endif
|
||||
(firstChar == L'\\') // wince absolute path or network path
|
||||
|
||||
)
|
||||
{
|
||||
// This is a native path
|
||||
path = ToNewUnicode(filePath);
|
||||
pathLen = filePath.Length();
|
||||
}
|
||||
|
||||
if (path == nsnull) {
|
||||
if (FindCharInReadable(L'/', begin, end))
|
||||
return NS_ERROR_FILE_UNRECOGNIZED_PATH;
|
||||
}
|
||||
|
||||
#ifdef WINCE
|
||||
if (firstChar != L'\\')
|
||||
#else
|
||||
if (secondChar != L':' && (secondChar != L'\\' || firstChar != L'\\'))
|
||||
#endif
|
||||
return NS_ERROR_FILE_UNRECOGNIZED_PATH;
|
||||
|
||||
mWorkingPath = filePath;
|
||||
// kill any trailing '\'
|
||||
PRInt32 len = pathLen - 1;
|
||||
if (path[len] == L'\\')
|
||||
{
|
||||
path[len] = L'\0';
|
||||
pathLen = len;
|
||||
}
|
||||
if (mWorkingPath.Last() == L'\\')
|
||||
mWorkingPath.Truncate(mWorkingPath.Length() - 1);
|
||||
|
||||
mWorkingPath.Adopt(path, pathLen);
|
||||
return NS_OK;
|
||||
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче