Index: third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp |
diff --git a/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp b/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp |
index ddbe4cd3a088f29fdb4fd10eed1cf2db736ede51..55478aab08ff6520c900dbed8931b8270fb78694 100644 |
--- a/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp |
+++ b/third_party/WebKit/Source/modules/indexeddb/IndexedDBClient.cpp |
@@ -11,6 +11,10 @@ static void* idbClientCreateFunction = nullptr; |
void setIndexedDBClientCreateFunction(CreateIndexedDBClient createFunction) |
{ |
+ // See web/IndexedDBClientImpl.h comment for some context. As the initialization |
+ // of this IndexedDB client constructor now happens as context is set up for |
+ // threads, it is possible that setIndexedDBClientCreateFunction() will be |
+ // called more than once. Hence update atomicity is needed. |
#if ENABLE(ASSERT) |
CreateIndexedDBClient* currentFunction = reinterpret_cast<CreateIndexedDBClient*>(acquireLoad(&idbClientCreateFunction)); |
ASSERT(!currentFunction || currentFunction == createFunction); |