diff -r 27c3f029180a -r 4c5d44d40a03 mozilla-bmo1601707.patch --- 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 ") +