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->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->client() || d->m_cancelled)
return false;
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->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->client() || d->m_cancelled)
return false;