Bug 1398045: Correctly handle channels that don't support weak references. r?mixedpuppy
MozReview-Commit-ID: GX6zUAzVrBZ
--- a/toolkit/components/extensions/webrequest/ChannelWrapper.h
+++ b/toolkit/components/extensions/webrequest/ChannelWrapper.h
@@ -46,41 +46,41 @@ namespace detail {
// members directly from our ChannelWrapper class.
struct ChannelHolder
{
explicit ChannelHolder(nsIChannel* aChannel)
: mChannel(do_GetWeakReference(aChannel))
, mWeakChannel(aChannel)
{}
- bool HaveChannel() const { return mChannel->IsAlive(); }
+ bool HaveChannel() const { return mChannel && mChannel->IsAlive(); }
void SetChannel(nsIChannel* aChannel)
{
mChannel = do_GetWeakReference(aChannel);
mWeakChannel = aChannel;
mWeakHttpChannel.reset();
}
already_AddRefed<nsIChannel> MaybeChannel() const
{
- if (!mChannel->IsAlive()) {
+ if (!HaveChannel())) {
mWeakChannel = nullptr;
}
return do_AddRef(mWeakChannel);
}
already_AddRefed<nsIHttpChannel> MaybeHttpChannel() const
{
if (mWeakHttpChannel.isNothing()) {
nsCOMPtr<nsIHttpChannel> chan = QueryChannel();
mWeakHttpChannel.emplace(chan.get());
}
- if (!mChannel->IsAlive()) {
+ if (!HaveChannel())) {
mWeakHttpChannel.ref() = nullptr;
}
return do_AddRef(mWeakHttpChannel.value());
}
const nsQueryReferent QueryChannel() const { return do_QueryReferent(mChannel); }
private: