Blob Blame History Raw
diff -up firefox-71.0/dom/indexedDB/ActorsParent.cpp.gcc-workaround firefox-71.0/dom/indexedDB/ActorsParent.cpp
--- firefox-71.0/dom/indexedDB/ActorsParent.cpp.gcc-workaround	2019-12-02 13:22:58.000000000 +0100
+++ firefox-71.0/dom/indexedDB/ActorsParent.cpp	2019-12-08 21:52:54.449199120 +0100
@@ -24311,11 +24311,11 @@ nsresult ObjectStoreAddOrPutRequestOp::D
   // 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 (:") +
@@ -25869,11 +25869,8 @@ void Cursor::OpenOp::PrepareIndexKeyCond
     }
   }
 
-  const auto& comparisonChar =
-      isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<");
-
   mCursor->mContinueToQuery =
-      aQueryStart + NS_LITERAL_CSTRING(" AND sort_column ") + comparisonChar +
+      aQueryStart + NS_LITERAL_CSTRING(" AND sort_column ") + (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) +
       NS_LITERAL_CSTRING("= :") + kStmtParamNameCurrentKey;
 
   switch (mCursor->mDirection) {
@@ -25881,11 +25878,11 @@ void Cursor::OpenOp::PrepareIndexKeyCond
     case IDBCursor::PREV:
       mCursor->mContinueQuery =
           aQueryStart + NS_LITERAL_CSTRING(" AND sort_column ") +
-          comparisonChar + NS_LITERAL_CSTRING("= :") +
+          (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) + NS_LITERAL_CSTRING("= :") +
           kStmtParamNameCurrentKey + NS_LITERAL_CSTRING(" AND ( sort_column ") +
-          comparisonChar + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey +
+          (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey +
           NS_LITERAL_CSTRING(" OR ") + aObjectDataKeyPrefix +
-          NS_LITERAL_CSTRING("object_data_key ") + comparisonChar +
+          NS_LITERAL_CSTRING("object_data_key ") + (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) +
           NS_LITERAL_CSTRING(" :") + kStmtParamNameObjectStorePosition +
           NS_LITERAL_CSTRING(" ) ");
 
@@ -25896,12 +25893,12 @@ void Cursor::OpenOp::PrepareIndexKeyCond
               "(sort_column == :") +
           kStmtParamNameCurrentKey + NS_LITERAL_CSTRING(" AND ") +
           aObjectDataKeyPrefix + NS_LITERAL_CSTRING("object_data_key ") +
-          comparisonChar + NS_LITERAL_CSTRING("= :") +
+          (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) + NS_LITERAL_CSTRING("= :") +
           kStmtParamNameObjectStorePosition +
           NS_LITERAL_CSTRING(
               ") OR "
               "sort_column ") +
-          comparisonChar + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey +
+          (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey +
           NS_LITERAL_CSTRING(")");
       break;
 
@@ -25909,7 +25906,7 @@ void Cursor::OpenOp::PrepareIndexKeyCond
     case IDBCursor::PREV_UNIQUE:
       mCursor->mContinueQuery =
           aQueryStart + NS_LITERAL_CSTRING(" AND sort_column ") +
-          comparisonChar + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey;
+          (isIncreasingOrder ? NS_LITERAL_CSTRING(">") : NS_LITERAL_CSTRING("<")) + NS_LITERAL_CSTRING(" :") + kStmtParamNameCurrentKey;
       break;
 
     default:
@@ -26076,9 +26073,6 @@ nsresult Cursor::OpenOp::DoIndexDatabase
 
   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 +26093,9 @@ nsresult Cursor::OpenOp::DoIndexDatabase
                                  "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 +26194,6 @@ nsresult Cursor::OpenOp::DoIndexKeyDatab
 
   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 +26211,10 @@ nsresult Cursor::OpenOp::DoIndexKeyDatab
                              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 =