From 1c366a46bddc219751d584e28db0705165e99598 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 28 Jun 2021 20:22:18 +0530 Subject: [PATCH] Remember language used to create stemmer --- src/calibre/db/sqlite_extension.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/calibre/db/sqlite_extension.cpp b/src/calibre/db/sqlite_extension.cpp index 2caf9440ba..bd238945b4 100644 --- a/src/calibre/db/sqlite_extension.cpp +++ b/src/calibre/db/sqlite_extension.cpp @@ -102,18 +102,20 @@ class IteratorDescription { class Stemmer { private: struct sb_stemmer *handle; + char lang_name[32]; public: - Stemmer() : handle(NULL) {} + Stemmer() : handle(NULL), lang_name() {} Stemmer(const char *lang) { - char buf[32] = {0}; size_t len = strlen(lang); - for (size_t i = 0; i < sizeof(buf) - 1 && i < len; i++) { - buf[i] = lang[i]; - if ('A' <= buf[i] && buf[i] <= 'Z') buf[i] += 'a' - 'A'; + for (size_t i = 0; i < sizeof(lang_name) - 1 && i < len; i++) { + lang_name[i] = lang[i]; + if ('A' <= lang_name[i] && lang_name[i] <= 'Z') lang_name[i] += 'a' - 'A'; } - handle = sb_stemmer_new(buf, NULL); + lang_name[std::min(len, sizeof(lang_name) - 1)] = 0; + handle = sb_stemmer_new(lang_name, NULL); } + const char* language_name() const { return lang_name; } ~Stemmer() { if (handle) {