diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 9547170..c4cb1eb 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,25 @@
+2013-05-15  Yongjun Zhang  <yongjun_zhang@apple.com>
+
+        We should clear mainResource in DocumentLoader::cancelMainResourceLoad.
+        https://bugs.webkit.org/show_bug.cgi?id=116119
+
+        Reviewed by Oliver Hunt.
+
+        MainResourceLoader::clearResource() was left out in r146239 when moving MainResourceLoader::cancel()
+        to DocumentLoader::cancelMainResourceLoad(), we need to add it back to make sure m_mainResource is
+        cleared when we cancel the loader.
+
+        No new tests needed.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::~DocumentLoader):
+        (WebCore::DocumentLoader::continueAfterNavigationPolicy):
+        (WebCore::DocumentLoader::cancelMainResourceLoad):
+        (WebCore::DocumentLoader::clearMainResource):
+        (WebCore):
+        * loader/DocumentLoader.h: add helper method clearMainResource()
+        (DocumentLoader):
+
 2013-05-15  Joe Mason  <jmason@blackberry.com>
 
         [BlackBerry] When HTTP auth fails, only purge credentials that match the failed credentials
diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp
index 3124d32..f714c78 100644
--- a/Source/WebCore/loader/DocumentLoader.cpp
+++ b/Source/WebCore/loader/DocumentLoader.cpp
@@ -143,10 +143,7 @@
         m_iconDataCallback->invalidate();
     m_cachedResourceLoader->clearDocumentLoader();
     
-    if (m_mainResource) {
-        m_mainResource->removeClient(this);
-        m_mainResource = 0;
-    }
+    clearMainResource();
 }
 
 PassRefPtr<ResourceBuffer> DocumentLoader::mainResourceData() const
@@ -546,10 +543,7 @@
         RefPtr<ResourceLoader> resourceLoader = mainResourceLoader();
         ASSERT(resourceLoader->shouldSendResourceLoadCallbacks());
         resourceLoader->setSendCallbackPolicy(DoNotSendCallbacks);
-        if (m_mainResource) {
-            m_mainResource->removeClient(this);
-            m_mainResource = 0;
-        }
+        clearMainResource();
         resourceLoader->setSendCallbackPolicy(SendCallbacks);
         handleSubstituteDataLoadSoon();
     }
@@ -1409,9 +1403,19 @@
     if (mainResourceLoader())
         mainResourceLoader()->cancel(error);
 
+    clearMainResource();
+
     mainReceivedError(error);
 }
 
+void DocumentLoader::clearMainResource()
+{
+    if (m_mainResource) {
+        m_mainResource->removeClient(this);
+        m_mainResource = 0;
+    }
+}
+
 void DocumentLoader::subresourceLoaderFinishedLoadingOnePart(ResourceLoader* loader)
 {
     m_multipartSubresourceLoaders.add(loader);
diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h
index e875c57..4bd2c7a 100644
--- a/Source/WebCore/loader/DocumentLoader.h
+++ b/Source/WebCore/loader/DocumentLoader.h
@@ -308,7 +308,9 @@
 
         void deliverSubstituteResourcesAfterDelay();
         void substituteResourceDeliveryTimerFired(Timer<DocumentLoader>*);
-                
+
+        void clearMainResource();
+
         Frame* m_frame;
         RefPtr<CachedResourceLoader> m_cachedResourceLoader;
 
