Bug 466314 - updatingImplicit.html (used by test_offlineMode.html and test_updatingManifest.html) crashes SeaMonkey, r=dcamp, sr=jst

This commit is contained in:
Honza Bambas 2009-01-28 16:07:23 +01:00
Родитель f7d566032e
Коммит 75a83656c3
2 изменённых файлов: 13 добавлений и 7 удалений

Просмотреть файл

@ -59,9 +59,11 @@ _TEST_FILES = \
test_changingManifest.html \ test_changingManifest.html \
test_refetchManifest.html \ test_refetchManifest.html \
test_offlineIFrame.html \ test_offlineIFrame.html \
test_offlineMode.html \
test_bug445544.html \ test_bug445544.html \
test_foreign.html \ test_foreign.html \
test_fallback.html \ test_fallback.html \
test_updatingManifest.html \
445544_part1.html \ 445544_part1.html \
445544_part2.html \ 445544_part2.html \
445544.cacheManifest \ 445544.cacheManifest \
@ -87,6 +89,9 @@ _TEST_FILES = \
foreign2.cacheManifest \ foreign2.cacheManifest \
foreign2.cacheManifest^headers^ \ foreign2.cacheManifest^headers^ \
foreign2.html \ foreign2.html \
notonwhitelist.html \
onwhitelist.html \
onwhitelist.html^headers^ \
updatingIFrame.html \ updatingIFrame.html \
updatingIFrame.html^headers^ \ updatingIFrame.html^headers^ \
updatingImplicit.html \ updatingImplicit.html \
@ -104,12 +109,5 @@ _TEST_FILES = \
offlineChild.html \ offlineChild.html \
$(NULL) $(NULL)
# Bug 466314 - updatingImplicit.html (used by test_offlineMode.html and test_updatingManifest.html) crashes SeaMonkey
# test_offlineMode.html \
# notonwhitelist.html \
# test_updatingManifest.html \
# onwhitelist.html \
# onwhitelist.html^headers^ \
libs:: $(_TEST_FILES) libs:: $(_TEST_FILES)
$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir) $(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)

Просмотреть файл

@ -67,6 +67,7 @@
#include "nsServiceManagerUtils.h" #include "nsServiceManagerUtils.h"
#include "nsStreamUtils.h" #include "nsStreamUtils.h"
#include "nsThreadUtils.h" #include "nsThreadUtils.h"
#include "nsProxyRelease.h"
#include "prlog.h" #include "prlog.h"
static nsOfflineCacheUpdateService *gOfflineCacheUpdateService = nsnull; static nsOfflineCacheUpdateService *gOfflineCacheUpdateService = nsnull;
@ -1828,6 +1829,13 @@ nsOfflineCacheUpdate::Finish()
{ {
LOG(("nsOfflineCacheUpdate::Finish [%p]", this)); LOG(("nsOfflineCacheUpdate::Finish [%p]", this));
// Because call to service->UpdateFinished(this) at the end of this method
// may relese the last reference to this object but we still want to work
// with it after Finish() call ended, make sure to release this instance in
// the next thread loop round.
NS_ADDREF_THIS();
NS_ProxyRelease(NS_GetCurrentThread(), this, PR_TRUE);
mState = STATE_FINISHED; mState = STATE_FINISHED;
nsOfflineCacheUpdateService* service = nsOfflineCacheUpdateService* service =