From ef78b19912cb09cf088ad3e7b96d692aef45a5b1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 18 Jun 2021 21:40:14 +0530 Subject: [PATCH] Also hold global lock when constructing a tokenizer and setting its current_ui_language --- src/calibre/db/sqlite_extension.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/calibre/db/sqlite_extension.cpp b/src/calibre/db/sqlite_extension.cpp index 5804f209fa..64671c3bb9 100644 --- a/src/calibre/db/sqlite_extension.cpp +++ b/src/calibre/db/sqlite_extension.cpp @@ -238,7 +238,7 @@ public: int constructor_error; Tokenizer(const char **args, int nargs) : remove_diacritics(true), diacritics_remover(), - byte_offsets(), token_buf(), current_ui_language(ui_language), + byte_offsets(), token_buf(), current_ui_language(""), current_callback(NULL), current_callback_ctx(NULL), iterators(), constructor_error(SQLITE_OK) @@ -259,6 +259,8 @@ public: remove_diacritics = false; } } + std::lock_guard lock(global_mutex); + current_ui_language = ui_language; } int tokenize(void *callback_ctx, int flags, const char *text, int text_sz, token_callback_func callback) {