Title: [137773] trunk/Source/WebKit/chromium
- Revision
- 137773
- Author
- [email protected]
- Date
- 2012-12-14 14:31:53 -0800 (Fri, 14 Dec 2012)
Log Message
[Chromium] IndexedDB: Memory leak in IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface>)
https://bugs.webkit.org/show_bug.cgi?id=104615
Reviewed by Tony Chang.
Don't create (and leak) a new wrapper object for onSuccess if one was created for onUpgradeNeeded.
* src/IDBCallbacksProxy.cpp:
(WebKit::IDBCallbacksProxy::IDBCallbacksProxy):
(WebKit::IDBCallbacksProxy::onSuccess):
(WebKit::IDBCallbacksProxy::onUpgradeNeeded):
* src/IDBCallbacksProxy.h:
(IDBCallbacksProxy):
Modified Paths
Diff
Modified: trunk/Source/WebKit/chromium/ChangeLog (137772 => 137773)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-12-14 22:30:20 UTC (rev 137772)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-12-14 22:31:53 UTC (rev 137773)
@@ -1,3 +1,19 @@
+2012-12-14 Joshua Bell <[email protected]>
+
+ [Chromium] IndexedDB: Memory leak in IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface>)
+ https://bugs.webkit.org/show_bug.cgi?id=104615
+
+ Reviewed by Tony Chang.
+
+ Don't create (and leak) a new wrapper object for onSuccess if one was created for onUpgradeNeeded.
+
+ * src/IDBCallbacksProxy.cpp:
+ (WebKit::IDBCallbacksProxy::IDBCallbacksProxy):
+ (WebKit::IDBCallbacksProxy::onSuccess):
+ (WebKit::IDBCallbacksProxy::onUpgradeNeeded):
+ * src/IDBCallbacksProxy.h:
+ (IDBCallbacksProxy):
+
2012-12-14 Yusuf Ozuysal <[email protected]>
Send a message from WebViewImpl to the compositor to inform about end of flings
Modified: trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp (137772 => 137773)
--- trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp 2012-12-14 22:30:20 UTC (rev 137772)
+++ trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp 2012-12-14 22:31:53 UTC (rev 137773)
@@ -59,6 +59,7 @@
IDBCallbacksProxy::IDBCallbacksProxy(PassOwnPtr<WebIDBCallbacks> callbacks)
: m_callbacks(callbacks)
+ , m_didCreateProxy(false)
{
}
@@ -79,7 +80,8 @@
void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend)
{
ASSERT(m_databaseCallbacks.get());
- m_callbacks->onSuccess(new WebIDBDatabaseImpl(backend, m_databaseCallbacks.release()));
+ WebIDBDatabaseImpl* impl = m_didCreateProxy ? 0 : new WebIDBDatabaseImpl(backend, m_databaseCallbacks.release());
+ m_callbacks->onSuccess(impl);
}
void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBKey> idbKey)
@@ -147,6 +149,7 @@
void IDBCallbacksProxy::onUpgradeNeeded(int64_t oldVersion, PassRefPtr<IDBTransactionBackendInterface> transaction, PassRefPtr<IDBDatabaseBackendInterface> database)
{
ASSERT(m_databaseCallbacks);
+ m_didCreateProxy = true;
m_callbacks->onUpgradeNeeded(oldVersion, new WebIDBTransactionImpl(transaction), new WebIDBDatabaseImpl(database, m_databaseCallbacks));
}
Modified: trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.h (137772 => 137773)
--- trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.h 2012-12-14 22:30:20 UTC (rev 137772)
+++ trunk/Source/WebKit/chromium/src/IDBCallbacksProxy.h 2012-12-14 22:31:53 UTC (rev 137773)
@@ -68,6 +68,7 @@
OwnPtr<WebIDBCallbacks> m_callbacks;
RefPtr<IDBDatabaseCallbacksProxy> m_databaseCallbacks;
+ bool m_didCreateProxy;
};
} // namespace WebKit
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes