зеркало из https://github.com/mozilla/gecko-dev.git
Since some platforms do string operations within local file ::Load, we shouldn't declare that objects being created/destroyed from static ctor/dtor is not legal throughout the entire ::Load function. That only needs to be true around the actual PR_LoadLibrary calls. Fixing this stops the ridiculous amount of warning output that we get from every debug mac build. Also removing unused old mac local file impls. b=326837 r=bsmedberg
This commit is contained in:
Родитель
480e437415
Коммит
e8b317b9f3
|
@ -134,16 +134,9 @@ nsNativeModuleLoader::LoadModule(nsILocalFile* aFile, nsIModule* *aResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
// We haven't loaded this module before
|
// We haven't loaded this module before
|
||||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
|
||||||
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rv = aFile->Load(&data.library);
|
rv = aFile->Load(&data.library);
|
||||||
|
|
||||||
#ifdef NS_BUILD_REFCNT_LOGGING
|
|
||||||
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
char errorMsg[1024] = "<unknown; can't get error from NSPR>";
|
char errorMsg[1024] = "<unknown; can't get error from NSPR>";
|
||||||
|
|
||||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,137 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
/* ***** BEGIN LICENSE BLOCK *****
|
|
||||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public License Version
|
|
||||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
* http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
||||||
* for the specific language governing rights and limitations under the
|
|
||||||
* License.
|
|
||||||
*
|
|
||||||
* The Original Code is Mozilla Communicator client code, released
|
|
||||||
* March 31, 1998.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is
|
|
||||||
* Netscape Communications Corporation.
|
|
||||||
* Portions created by the Initial Developer are Copyright (C) 1998-1999
|
|
||||||
* the Initial Developer. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
* Steve Dagley <sdagley@netscape.com>
|
|
||||||
*
|
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
|
||||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
||||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
||||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
||||||
* of those above. If you wish to allow use of your version of this file only
|
|
||||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
||||||
* use your version of this file under the terms of the MPL, indicate your
|
|
||||||
* decision by deleting the provisions above and replace them with the notice
|
|
||||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
||||||
* the provisions above, a recipient may use your version of this file under
|
|
||||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
||||||
*
|
|
||||||
* ***** END LICENSE BLOCK ***** */
|
|
||||||
|
|
||||||
#ifndef _nsLocalFileMAC_H_
|
|
||||||
#define _nsLocalFileMAC_H_
|
|
||||||
|
|
||||||
#include "nscore.h"
|
|
||||||
#include "nsError.h"
|
|
||||||
#include "nsString.h"
|
|
||||||
#include "nsCRT.h"
|
|
||||||
#include "nsIFile.h"
|
|
||||||
#include "nsILocalFileMac.h"
|
|
||||||
#include "nsIFactory.h"
|
|
||||||
|
|
||||||
#include <Processes.h>
|
|
||||||
|
|
||||||
class NS_COM nsLocalFile : public nsILocalFileMac
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NS_DEFINE_STATIC_CID_ACCESSOR(NS_LOCAL_FILE_CID)
|
|
||||||
|
|
||||||
nsLocalFile();
|
|
||||||
|
|
||||||
static NS_METHOD nsLocalFileConstructor(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr);
|
|
||||||
|
|
||||||
// nsISupports interface
|
|
||||||
NS_DECL_ISUPPORTS
|
|
||||||
|
|
||||||
// nsIFile interface
|
|
||||||
NS_DECL_NSIFILE
|
|
||||||
|
|
||||||
// nsILocalFile interface
|
|
||||||
NS_DECL_NSILOCALFILE
|
|
||||||
|
|
||||||
// nsILocalFileMac interface
|
|
||||||
NS_DECL_NSILOCALFILEMAC
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
static void GlobalInit();
|
|
||||||
static void GlobalShutdown();
|
|
||||||
|
|
||||||
private:
|
|
||||||
~nsLocalFile() {}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void MakeDirty();
|
|
||||||
nsresult ResolveAndStat();
|
|
||||||
nsresult UpdateCachedCatInfo(PRBool forceUpdate);
|
|
||||||
|
|
||||||
nsresult FindAppOnLocalVolumes(OSType sig, FSSpec &outSpec);
|
|
||||||
|
|
||||||
nsresult FindRunningAppBySignature(OSType sig, FSSpec& outSpec, ProcessSerialNumber& outPsn);
|
|
||||||
nsresult FindRunningAppByFSSpec(const FSSpec& appSpec, ProcessSerialNumber& outPsn);
|
|
||||||
|
|
||||||
nsresult MyLaunchAppWithDoc(const FSSpec& appSpec, const FSSpec* aDocToLoad, PRBool aLaunchInBackground);
|
|
||||||
|
|
||||||
nsresult TestFinderFlag(PRUint16 flagMask, PRBool *outFlagSet, PRBool testTargetSpec = PR_TRUE);
|
|
||||||
|
|
||||||
nsresult MoveCopy( nsIFile* newParentDir, const nsACString &newName, PRBool isCopy, PRBool followLinks );
|
|
||||||
|
|
||||||
// Passing nsnull for the extension uses leaf name
|
|
||||||
nsresult SetOSTypeAndCreatorFromExtension(const char* extension = nsnull);
|
|
||||||
|
|
||||||
nsresult ExtensionIsOnExceptionList(const char *extension, PRBool *onList);
|
|
||||||
|
|
||||||
private:
|
|
||||||
nsLocalFile(const nsLocalFile& srcFile);
|
|
||||||
nsLocalFile(const FSSpec& aSpec, const nsACString& aAppendedPath);
|
|
||||||
|
|
||||||
// Copies all members except mRefCnt, copies mCachedCatInfo only if it's valid.
|
|
||||||
nsLocalFile& operator=(const nsLocalFile& rhs);
|
|
||||||
|
|
||||||
PRPackedBool mFollowLinks;
|
|
||||||
PRPackedBool mFollowLinksDirty;
|
|
||||||
|
|
||||||
// The object we specify is always: mSpec + mAppendedPath.
|
|
||||||
// mSpec is a valid spec in that its parent is known to exist.
|
|
||||||
// Appending nodes with Append() will update mSpec immediately
|
|
||||||
// if the appended node exists. If not, appended nodes are stored
|
|
||||||
// in mAppendedPath.
|
|
||||||
|
|
||||||
PRPackedBool mSpecDirty;
|
|
||||||
FSSpec mSpec;
|
|
||||||
nsCString mAppendedPath;
|
|
||||||
FSSpec mTargetSpec; // If mSpec is an alias, this is the resolved alias.
|
|
||||||
|
|
||||||
CInfoPBRec mCachedCatInfo; // cached file info, for the GetFSSpec() spec
|
|
||||||
PRPackedBool mCatInfoDirty; // does this need to be updated?
|
|
||||||
|
|
||||||
OSType mType, mCreator;
|
|
||||||
|
|
||||||
static void InitClassStatics();
|
|
||||||
|
|
||||||
static OSType sCurrentProcessSignature;
|
|
||||||
static PRBool sHasHFSPlusAPIs;
|
|
||||||
static PRBool sRunningOSX;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
#include "nsReadableUtils.h"
|
#include "nsReadableUtils.h"
|
||||||
#include "nsISupportsPrimitives.h"
|
#include "nsISupportsPrimitives.h"
|
||||||
#include "nsIMutableArray.h"
|
#include "nsIMutableArray.h"
|
||||||
|
#include "nsTraceRefcntImpl.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// static helper functions
|
// static helper functions
|
||||||
|
@ -1663,11 +1664,19 @@ nsLocalFile::Load(PRLibrary * *_retval)
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
if (! isFile)
|
if (!isFile)
|
||||||
return NS_ERROR_FILE_IS_DIRECTORY;
|
return NS_ERROR_FILE_IS_DIRECTORY;
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
||||||
|
#endif
|
||||||
|
|
||||||
*_retval = PR_LoadLibrary(mWorkingPath.get());
|
*_retval = PR_LoadLibrary(mWorkingPath.get());
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (*_retval)
|
if (*_retval)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
#include "MoreFilesX.h"
|
#include "MoreFilesX.h"
|
||||||
#include "FSCopyObject.h"
|
#include "FSCopyObject.h"
|
||||||
#include "nsAutoBuffer.h"
|
#include "nsAutoBuffer.h"
|
||||||
|
#include "nsTraceRefcntImpl.h"
|
||||||
|
|
||||||
// Mac Includes
|
// Mac Includes
|
||||||
#include <Carbon/Carbon.h>
|
#include <Carbon/Carbon.h>
|
||||||
|
@ -1347,8 +1348,16 @@ NS_IMETHODIMP nsLocalFile::Load(PRLibrary **_retval)
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
return rv;
|
return rv;
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
||||||
|
#endif
|
||||||
|
|
||||||
*_retval = PR_LoadLibrary(path.get());
|
*_retval = PR_LoadLibrary(path.get());
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
NS_TIMELINE_STOP_TIMER("PR_LoadLibrary");
|
NS_TIMELINE_STOP_TIMER("PR_LoadLibrary");
|
||||||
NS_TIMELINE_MARK_TIMER1("PR_LoadLibrary", path.get());
|
NS_TIMELINE_MARK_TIMER1("PR_LoadLibrary", path.get());
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,7 @@
|
||||||
#include "nsITimelineService.h"
|
#include "nsITimelineService.h"
|
||||||
|
|
||||||
#include "nsNativeCharsetUtils.h"
|
#include "nsNativeCharsetUtils.h"
|
||||||
|
#include "nsTraceRefcntImpl.h"
|
||||||
|
|
||||||
// On some platforms file/directory name comparisons need to
|
// On some platforms file/directory name comparisons need to
|
||||||
// be case-blind.
|
// be case-blind.
|
||||||
|
@ -1586,8 +1587,16 @@ nsLocalFile::Load(PRLibrary **_retval)
|
||||||
|
|
||||||
NS_TIMELINE_START_TIMER("PR_LoadLibrary");
|
NS_TIMELINE_START_TIMER("PR_LoadLibrary");
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
||||||
|
#endif
|
||||||
|
|
||||||
*_retval = PR_LoadLibrary(mPath.get());
|
*_retval = PR_LoadLibrary(mPath.get());
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
NS_TIMELINE_STOP_TIMER("PR_LoadLibrary");
|
NS_TIMELINE_STOP_TIMER("PR_LoadLibrary");
|
||||||
NS_TIMELINE_MARK_TIMER1("PR_LoadLibrary", mPath.get());
|
NS_TIMELINE_MARK_TIMER1("PR_LoadLibrary", mPath.get());
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,8 @@
|
||||||
#include "nsAutoLock.h"
|
#include "nsAutoLock.h"
|
||||||
#include "SpecialSystemDirectory.h"
|
#include "SpecialSystemDirectory.h"
|
||||||
|
|
||||||
|
#include "nsTraceRefcntImpl.h"
|
||||||
|
|
||||||
// _mbsstr isn't declared in w32api headers but it's there in the libs
|
// _mbsstr isn't declared in w32api headers but it's there in the libs
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -1820,10 +1822,20 @@ nsLocalFile::Load(PRLibrary * *_retval)
|
||||||
return NS_ERROR_FILE_IS_DIRECTORY;
|
return NS_ERROR_FILE_IS_DIRECTORY;
|
||||||
|
|
||||||
NS_TIMELINE_START_TIMER("PR_LoadLibraryWithFlags");
|
NS_TIMELINE_START_TIMER("PR_LoadLibraryWithFlags");
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_FALSE);
|
||||||
|
#endif
|
||||||
|
|
||||||
PRLibSpec libSpec;
|
PRLibSpec libSpec;
|
||||||
libSpec.value.pathname_u = mResolvedPath.get();
|
libSpec.value.pathname_u = mResolvedPath.get();
|
||||||
libSpec.type = PR_LibSpec_PathnameU;
|
libSpec.type = PR_LibSpec_PathnameU;
|
||||||
*_retval = PR_LoadLibraryWithFlags(libSpec, 0);
|
*_retval = PR_LoadLibraryWithFlags(libSpec, 0);
|
||||||
|
|
||||||
|
#ifdef NS_BUILD_REFCNT_LOGGING
|
||||||
|
nsTraceRefcntImpl::SetActivityIsLegal(PR_TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
NS_TIMELINE_STOP_TIMER("PR_LoadLibraryWithFlags");
|
NS_TIMELINE_STOP_TIMER("PR_LoadLibraryWithFlags");
|
||||||
NS_TIMELINE_MARK_TIMER1("PR_LoadLibraryWithFlags",
|
NS_TIMELINE_MARK_TIMER1("PR_LoadLibraryWithFlags",
|
||||||
NS_ConvertUTF16toUTF8(mResolvedPath).get());
|
NS_ConvertUTF16toUTF8(mResolvedPath).get());
|
||||||
|
|
Загрузка…
Ссылка в новой задаче