From c75f20a8753b8df63b8e01e69194bf27d6b48795 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 19 Jun 2021 14:47:02 +0530 Subject: [PATCH] Dont repeatedly lookup the word iterator --- src/calibre/db/sqlite_extension.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/db/sqlite_extension.cpp b/src/calibre/db/sqlite_extension.cpp index 59a77e8854..0c362ecf50 100644 --- a/src/calibre/db/sqlite_extension.cpp +++ b/src/calibre/db/sqlite_extension.cpp @@ -276,20 +276,22 @@ public: IteratorDescription state; state.language = ""; state.script = USCRIPT_COMMON; int32_t start_script_block_at = offset; + auto word_iterator = std::ref(ensure_lang_iterator(state.language)); while (offset < str.length()) { UChar32 ch = str.char32At(offset); if (at_script_boundary(state, ch)) { if (offset > start_script_block_at) { if ((rc = tokenize_script_block( str, start_script_block_at, offset, - for_query, callback, callback_ctx, ensure_lang_iterator(state.language))) != SQLITE_OK) return rc; + for_query, callback, callback_ctx, word_iterator)) != SQLITE_OK) return rc; } start_script_block_at = offset; + word_iterator = ensure_lang_iterator(state.language); } offset = str.moveIndex32(offset, 1); } if (offset > start_script_block_at) { - rc = tokenize_script_block(str, start_script_block_at, offset, for_query, callback, callback_ctx, ensure_lang_iterator(state.language)); + rc = tokenize_script_block(str, start_script_block_at, offset, for_query, callback, callback_ctx, word_iterator); } return rc; }