summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch')
-rw-r--r--pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch b/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch
new file mode 100644
index 00000000000..f48cad9e67a
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch
@@ -0,0 +1,100 @@
+Original Patch: https://bugzilla.mozilla.org/show_bug.cgi?id=1601707#c6
+
+Also fixes the issues with dom localstorage.
+
+--- a/dom/indexedDB/ActorsParent.cpp
++++ b/dom/indexedDB/ActorsParent.cpp
+@@ -24311,11 +24311,11 @@ nsresult ObjectStoreAddOrPutRequestOp::DoDatabaseWork(
+   // if we allow overwrite or not. By not allowing overwrite we raise
+   // detectable errors rather than corrupting data.
+   DatabaseConnection::CachedStatement stmt;
+-  const auto& optReplaceDirective = (!mOverwrite || keyUnset)
+-                                        ? NS_LITERAL_CSTRING("")
+-                                        : NS_LITERAL_CSTRING("OR REPLACE ");
+   rv = aConnection->GetCachedStatement(
+-      NS_LITERAL_CSTRING("INSERT ") + optReplaceDirective +
++      NS_LITERAL_CSTRING("INSERT ") +
++	  ((!mOverwrite || keyUnset)
++           ? NS_LITERAL_CSTRING("")
++           : NS_LITERAL_CSTRING("OR REPLACE ")) +
+           NS_LITERAL_CSTRING("INTO object_data "
+                              "(object_store_id, key, file_ids, data) "
+                              "VALUES (:") +
+@@ -26076,9 +26076,6 @@ nsresult Cursor::OpenOp::DoIndexDatabaseWork(DatabaseConnection* aConnection) {
+ 
+   const bool usingKeyRange = mOptionalKeyRange.isSome();
+ 
+-  const auto& indexTable = mCursor->mUniqueIndex
+-                               ? NS_LITERAL_CSTRING("unique_index_data")
+-                               : NS_LITERAL_CSTRING("index_data");
+ 
+   NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column");
+ 
+@@ -26099,7 +26096,9 @@ nsresult Cursor::OpenOp::DoIndexDatabaseWork(DatabaseConnection* aConnection) {
+                                  "object_data.file_ids, "
+                                  "object_data.data "
+                                  "FROM ") +
+-                             indexTable +
++                             (mCursor->mUniqueIndex
++                                 ? NS_LITERAL_CSTRING("unique_index_data")
++                                 : NS_LITERAL_CSTRING("index_data")) +
+                              NS_LITERAL_CSTRING(
+                                  " AS index_table "
+                                  "JOIN object_data "
+@@ -26198,9 +26197,6 @@ nsresult Cursor::OpenOp::DoIndexKeyDatabaseWork(
+ 
+   const bool usingKeyRange = mOptionalKeyRange.isSome();
+ 
+-  const auto& table = mCursor->mUniqueIndex
+-                          ? NS_LITERAL_CSTRING("unique_index_data")
+-                          : NS_LITERAL_CSTRING("index_data");
+ 
+   NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column");
+ 
+@@ -26218,7 +26214,10 @@ nsresult Cursor::OpenOp::DoIndexKeyDatabaseWork(
+                              NS_LITERAL_CSTRING(
+                                  "object_data_key "
+                                  " FROM ") +
+-                             table + NS_LITERAL_CSTRING(" WHERE index_id = :") +
++                             (mCursor->mUniqueIndex
++                                 ? NS_LITERAL_CSTRING("unique_index_data")
++                                 : NS_LITERAL_CSTRING("index_data")) +
++                             NS_LITERAL_CSTRING(" WHERE index_id = :") +
+                              kStmtParamNameId;
+ 
+   const auto keyRangeClause =
+diff --git a/dom/localstorage/ActorsParent.cpp b/dom/localstorage/ActorsParent.cpp
+index 9c46c20670..642cef1701 100644
+--- a/dom/localstorage/ActorsParent.cpp
++++ b/dom/localstorage/ActorsParent.cpp
+@@ -6959,13 +6959,10 @@ nsresult PrepareDatastoreOp::Start() {
+   MOZ_ASSERT(!QuotaClient::IsShuttingDownOnBackgroundThread());
+   MOZ_ASSERT(MayProceed());
+ 
+-  const LSRequestCommonParams& commonParams =
+-      mForPreload
+-          ? mParams.get_LSRequestPreloadDatastoreParams().commonParams()
+-          : mParams.get_LSRequestPrepareDatastoreParams().commonParams();
+-
+   const PrincipalInfo& storagePrincipalInfo =
+-      commonParams.storagePrincipalInfo();
++      mForPreload
++          ? mParams.get_LSRequestPreloadDatastoreParams().commonParams().storagePrincipalInfo()
++          : mParams.get_LSRequestPrepareDatastoreParams().commonParams().storagePrincipalInfo();
+ 
+   if (storagePrincipalInfo.type() == PrincipalInfo::TSystemPrincipalInfo) {
+     QuotaManager::GetInfoForChrome(&mSuffix, &mGroup, &mOrigin);
+@@ -6996,10 +6993,9 @@ nsresult PrepareDatastoreOp::CheckExistingOperations() {
+     return NS_ERROR_FAILURE;
+   }
+ 
+-  const LSRequestCommonParams& commonParams =
+-      mForPreload
+-          ? mParams.get_LSRequestPreloadDatastoreParams().commonParams()
+-          : mParams.get_LSRequestPrepareDatastoreParams().commonParams();
++  const LSRequestCommonParams& preloadCommonParams = mParams.get_LSRequestPreloadDatastoreParams().commonParams();
++  const LSRequestCommonParams& prepareCommonParams = mParams.get_LSRequestPrepareDatastoreParams().commonParams();
++  const LSRequestCommonParams& commonParams = mForPreload ? preloadCommonParams : prepareCommonParams;
+ 
+   const PrincipalInfo& storagePrincipalInfo =
+       commonParams.storagePrincipalInfo();