Skip to content

Commit 3e93e04

Browse files
Bug 1584969 - Use nsMaybeWeakPtr to simplify the nsIProcess implementation r=kmag
Differential Revision: https://phabricator.services.mozilla.com/D47601 --HG-- extra : moz-landing-system : lando
1 parent 10d4186 commit 3e93e04

File tree

2 files changed

+6
-17
lines changed

2 files changed

+6
-17
lines changed

xpcom/threads/nsProcess.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
#include "nsIFile.h"
1818
#include "nsIThread.h"
1919
#include "nsIObserver.h"
20-
#include "nsIWeakReferenceUtils.h"
2120
#include "nsIObserver.h"
21+
#include "nsMaybeWeakPtr.h"
2222
#include "nsString.h"
2323
#ifndef XP_UNIX
2424
# include "prproces.h"
@@ -67,8 +67,7 @@ class nsProcess final : public nsIProcess, public nsIObserver {
6767
nsCOMPtr<nsIFile> mExecutable;
6868
nsString mTargetPath;
6969
int32_t mPid;
70-
nsCOMPtr<nsIObserver> mObserver;
71-
nsWeakPtr mWeakObserver;
70+
nsMaybeWeakPtr<nsIObserver> mObserver;
7271

7372
// These members are modified by multiple threads, any accesses should be
7473
// protected with mLock.

xpcom/threads/nsProcessCommon.cpp

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ nsProcess::nsProcess()
6666
mStartHidden(false),
6767
mNoShell(false),
6868
mPid(-1),
69-
mObserver(nullptr),
70-
mWeakObserver(nullptr),
7169
mExitValue(-1)
7270
#if !defined(XP_UNIX)
7371
,
@@ -319,14 +317,8 @@ void nsProcess::ProcessComplete() {
319317
}
320318

321319
mPid = -1;
322-
nsCOMPtr<nsIObserver> observer;
323-
if (mWeakObserver) {
324-
observer = do_QueryReferent(mWeakObserver);
325-
} else if (mObserver) {
326-
observer = mObserver;
327-
}
320+
nsCOMPtr<nsIObserver> observer = mObserver.GetValue();
328321
mObserver = nullptr;
329-
mWeakObserver = nullptr;
330322

331323
if (observer) {
332324
observer->Observe(NS_ISUPPORTS_CAST(nsIProcess*, this), topic, nullptr);
@@ -423,10 +415,9 @@ nsresult nsProcess::RunProcess(bool aBlocking, char** aMyArgv,
423415

424416
if (aObserver) {
425417
if (aHoldWeak) {
426-
mWeakObserver = do_GetWeakReference(aObserver);
427-
if (!mWeakObserver) {
428-
return NS_NOINTERFACE;
429-
}
418+
nsresult rv = NS_OK;
419+
mObserver = do_GetWeakReference(aObserver, &rv);
420+
NS_ENSURE_SUCCESS(rv, rv);
430421
} else {
431422
mObserver = aObserver;
432423
}
@@ -677,7 +668,6 @@ nsProcess::Observe(nsISupports* aSubject, const char* aTopic,
677668
}
678669

679670
mObserver = nullptr;
680-
mWeakObserver = nullptr;
681671

682672
MutexAutoLock lock(mLock);
683673
mShutdown = true;

0 commit comments

Comments
 (0)