<?xml version="1.0"?>
<paste-with-annotations>
  <paste>
    <number>
      <integer>95171</integer>
    </number>
    <user>
      <string>kov</string>
    </user>
    <title>
      <string>comment</string>
    </title>
    <contents>
      <string>diff --git a/WebCore/platform/network/soup/ResourceHandleSoup.cpp b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
index 205c68f..4c59d34 100644
--- a/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++ b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
@@ -388,6 +388,9 @@ static gboolean parseDataUrl(gpointer callback_data)
         response.setTextEncodingName(charset);
         client-&gt;didReceiveResponse(handle, response);
 
+        // The load may be cancelled, and the client may be destroyed
+        // by any of the client reporting calls, so we check, and bail
+        // out in either of those cases.
         if (!handle-&gt;client() || d-&gt;m_cancelled)
             return false;
 
</string>
    </contents>
    <universal-time>
      <integer>3475487062</integer>
    </universal-time>
    <channel>
      <string>#webkit-gtk</string>
    </channel>
    <colorization-mode>
      <string>WebKit (text or diff)</string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <keyword>TRUE</keyword>
    </is-unicode>
    <deletion-requested>
      <null/>
    </deletion-requested>
    <deletion-requested-email>
      <null/>
    </deletion-requested-email>
    <expiration-time>
      <null/>
    </expiration-time>
  </paste>
  <annotation>
    <number>
      <integer>1</integer>
    </number>
    <user>
      <string>kov</string>
    </user>
    <title>
      <string>changelog</string>
    </title>
    <contents>
      <string>diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a296aec..9304910 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -5,6 +5,14 @@
         fast/frames/iframe-reparenting.html crashing on GTK Debug bots
         https://bugs.webkit.org/show_bug.cgi?id=35081
 
+        Check that the client is alive after every call to it, since any
+        of them could cause the load to be cancelled, and the client to go
+        away.
+
+        This is much better than protecting a specific subclass of
+        ResourceHandleClient (ResourceLoader), which makes us fail when
+        any other client is used.
+
         Test: fast/frames/iframe-reparenting.html
 
         * platform/network/soup/ResourceHandleSoup.cpp:
diff --git a/WebCore/platform/network/soup/ResourceHandleSoup.cpp b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
index 205c68f..4c59d34 100644
--- a/WebCore/platform/network/soup/ResourceHandleSoup.cpp
+++ b/WebCore/platform/network/soup/ResourceHandleSoup.cpp
@@ -388,6 +388,9 @@ static gboolean parseDataUrl(gpointer callback_data)
         response.setTextEncodingName(charset);
         client-&gt;didReceiveResponse(handle, response);
 
+        // The load may be cancelled, and the client may be destroyed
+        // by any of the client reporting calls, so we check, and bail
+        // out in either of those cases.
         if (!handle-&gt;client() || d-&gt;m_cancelled)
             return false;
 
</string>
    </contents>
    <universal-time>
      <integer>3475487261</integer>
    </universal-time>
    <channel>
      <string>#webkit-gtk</string>
    </channel>
    <colorization-mode>
      <string></string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <keyword>TRUE</keyword>
    </is-unicode>
    <deletion-requested>
      <null/>
    </deletion-requested>
    <deletion-requested-email>
      <null/>
    </deletion-requested-email>
    <expiration-time>
      <null/>
    </expiration-time>
  </annotation>
</paste-with-annotations>
