mozilla-bmo1601707.patch
branchfirefox72
changeset 1119 4c5d44d40a03
parent 1118 27c3f029180a
--- a/mozilla-bmo1601707.patch	Tue Jan 07 09:47:03 2020 +0100
+++ b/mozilla-bmo1601707.patch	Wed Jan 08 14:48:49 2020 +0100
@@ -1,7 +1,15 @@
+# HG changeset patch
+# Parent  862430a659a4f1fcbbbbfcf1cba98eb7e31035dc
+
 diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
 --- a/dom/indexedDB/ActorsParent.cpp
 +++ b/dom/indexedDB/ActorsParent.cpp
-@@ -24311,9 +24311,9 @@
+@@ -24612,19 +24612,19 @@ nsresult ObjectStoreAddOrPutRequestOp::D
+     }
+   }
+ 
+   // The "|| keyUnset" here is mostly a debugging tool. If a key isn't
+   // specified we should never have a collision and so it shouldn't matter
    // if we allow overwrite or not. By not allowing overwrite we raise
    // detectable errors rather than corrupting data.
    DatabaseConnection::CachedStatement stmt;
@@ -14,16 +22,17 @@
    rv = aConnection->GetCachedStatement(
        NS_LITERAL_CSTRING("INSERT ") + optReplaceDirective +
            NS_LITERAL_CSTRING("INTO object_data "
-@@ -25869,7 +25869,7 @@
-     }
-   }
+                              "(object_store_id, key, file_ids, data) "
+                              "VALUES (:") +
+           kStmtParamNameObjectStoreId + NS_LITERAL_CSTRING(", :") +
+           kStmtParamNameKey + NS_LITERAL_CSTRING(", :") +
+           kStmtParamNameFileIds + NS_LITERAL_CSTRING(", :") +
+@@ -26452,19 +26452,19 @@ nsresult Cursor::OpenOp::DoIndexDatabase
+   MOZ_ASSERT(mCursor->mType == OpenCursorParams::TIndexOpenCursorParams);
+   MOZ_ASSERT(mCursor->mObjectStoreId);
+   MOZ_ASSERT(mCursor->mIndexId);
  
--  const auto& comparisonChar =
-+  const auto comparisonChar =
-       isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<");
- 
-   mCursor->mContinueToQuery =
-@@ -26076,9 +26076,9 @@
+   AUTO_PROFILER_LABEL("Cursor::OpenOp::DoIndexDatabaseWork", DOM);
  
    const bool usingKeyRange = mOptionalKeyRange.isSome();
  
@@ -34,9 +43,19 @@
 +                              ? NS_LITERAL_CSTRING("unique_index_data")
 +                              : NS_LITERAL_CSTRING("index_data");
  
-   NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column");
+   // The result of MakeColumnPairSelectionList is stored in a local variable,
+   // since inlining it into the next statement causes a crash on some Mac OS X
+   // builds (see https://bugzilla.mozilla.org/show_bug.cgi?id=1168606#c110).
+   const auto columnPairSelectionList = MakeColumnPairSelectionList(
+       NS_LITERAL_CSTRING("index_table.value"),
+       NS_LITERAL_CSTRING("index_table.value_locale"), kColumnNameAliasSortKey,
+       mCursor->IsLocaleAware());
+@@ -26558,19 +26558,19 @@ nsresult Cursor::OpenOp::DoIndexKeyDatab
+   MOZ_ASSERT(mCursor->mType == OpenCursorParams::TIndexOpenKeyCursorParams);
+   MOZ_ASSERT(mCursor->mObjectStoreId);
+   MOZ_ASSERT(mCursor->mIndexId);
  
-@@ -26198,9 +26198,9 @@
+   AUTO_PROFILER_LABEL("Cursor::OpenOp::DoIndexKeyDatabaseWork", DOM);
  
    const bool usingKeyRange = mOptionalKeyRange.isSome();
  
@@ -47,6 +66,10 @@
 +                         ? NS_LITERAL_CSTRING("unique_index_data")
 +                         : NS_LITERAL_CSTRING("index_data");
  
-   NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column");
- 
-
+   // The result of MakeColumnPairSelectionList is stored in a local variable,
+   // since inlining it into the next statement causes a crash on some Mac OS X
+   // builds (see https://bugzilla.mozilla.org/show_bug.cgi?id=1168606#c110).
+   const auto columnPairSelectionList = MakeColumnPairSelectionList(
+       NS_LITERAL_CSTRING("value"), NS_LITERAL_CSTRING("value_locale"),
+       kColumnNameAliasSortKey, mCursor->IsLocaleAware());
+   const nsCString sortColumnAlias = NS_LITERAL_CSTRING("SELECT ") +