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 =