Title: [131467] trunk/Source/WebCore
- Revision
- 131467
- Author
- [email protected]
- Date
- 2012-10-16 09:56:17 -0700 (Tue, 16 Oct 2012)
Log Message
Re-order CachedRawResource::data() to set m_data earlier
https://bugs.webkit.org/show_bug.cgi?id=99361
Reviewed by Adam Barth.
Currently, we calculate the diff between the data parameter and m_data, call
dataReceived(), then set m_data to data. If something inside dataReceived()
tries to access m_data via CachedResource::resourceBuffer(), it will see the
old data instead of the new data, which seems inconsistent.
No new tests, as no one appears to try to access m_data within dataReceived() currently.
* loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::data):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (131466 => 131467)
--- trunk/Source/WebCore/ChangeLog 2012-10-16 16:52:26 UTC (rev 131466)
+++ trunk/Source/WebCore/ChangeLog 2012-10-16 16:56:17 UTC (rev 131467)
@@ -1,3 +1,20 @@
+2012-10-16 Nate Chapin <[email protected]>
+
+ Re-order CachedRawResource::data() to set m_data earlier
+ https://bugs.webkit.org/show_bug.cgi?id=99361
+
+ Reviewed by Adam Barth.
+
+ Currently, we calculate the diff between the data parameter and m_data, call
+ dataReceived(), then set m_data to data. If something inside dataReceived()
+ tries to access m_data via CachedResource::resourceBuffer(), it will see the
+ old data instead of the new data, which seems inconsistent.
+
+ No new tests, as no one appears to try to access m_data within dataReceived() currently.
+
+ * loader/cache/CachedRawResource.cpp:
+ (WebCore::CachedRawResource::data):
+
2012-10-16 Julien Chaffraix <[email protected]>
Fold setCellLogicalWidths logic into RenderTableSection layout
Modified: trunk/Source/WebCore/loader/cache/CachedRawResource.cpp (131466 => 131467)
--- trunk/Source/WebCore/loader/cache/CachedRawResource.cpp 2012-10-16 16:52:26 UTC (rev 131466)
+++ trunk/Source/WebCore/loader/cache/CachedRawResource.cpp 2012-10-16 16:56:17 UTC (rev 131467)
@@ -45,20 +45,16 @@
void CachedRawResource::data(PassRefPtr<ResourceBuffer> data, bool allDataReceived)
{
CachedResourceHandle<CachedRawResource> protect(this);
+ const char* incrementalData = 0;
+ size_t incrementalDataLength = 0;
if (data) {
// If we are buffering data, then we are saving the buffer in m_data and need to manually
// calculate the incremental data. If we are not buffering, then m_data will be null and
// the buffer contains only the incremental data.
size_t previousDataLength = (m_options.shouldBufferData == BufferData) ? encodedSize() : 0;
ASSERT(data->size() >= previousDataLength);
- const char* incrementalData = data->data() + previousDataLength;
- size_t incrementalDataLength = data->size() - previousDataLength;
-
- if (incrementalDataLength) {
- CachedResourceClientWalker<CachedRawResourceClient> w(m_clients);
- while (CachedRawResourceClient* c = w.next())
- c->dataReceived(this, incrementalData, incrementalDataLength);
- }
+ incrementalData = data->data() + previousDataLength;
+ incrementalDataLength = data->size() - previousDataLength;
}
if (m_options.shouldBufferData == BufferData) {
@@ -66,6 +62,12 @@
setEncodedSize(data->size());
m_data = data;
}
+
+ if (incrementalDataLength) {
+ CachedResourceClientWalker<CachedRawResourceClient> w(m_clients);
+ while (CachedRawResourceClient* c = w.next())
+ c->dataReceived(this, incrementalData, incrementalDataLength);
+ }
CachedResource::data(m_data, allDataReceived);
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes