]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Check words count properly
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 28 Jun 2024 14:00:21 +0000 (15:00 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 28 Jun 2024 14:00:21 +0000 (15:00 +0100)
src/plugins/lua/gpt.lua

index 7f4d55b173ac4d5c2e78d925c3f55858509bb591..dee83416dad414952d828ee2a670a9acdfeabc1b 100644 (file)
@@ -133,16 +133,18 @@ local function default_condition(task)
   end
 
   if nwords > settings.max_tokens then
-    -- We need to truncate words
+    -- We need to truncate words (sometimes get_words_count returns a different number comparing to `get_words`)
     local words = sel_part:get_words('norm')
-    -- Trim something that does not fit
-    for i = nwords, settings.max_tokens, -1 do
-      rawset(words, i, nil)
+    nwords = #words
+    if nwords > settings.max_tokens then
+      -- Trim something that does not fit
+      for i = nwords, settings.max_tokens, -1 do
+        rawset(words, i, nil)
+      end
+      return true, table.concat(words, ' ')
     end
-    return true, table.concat(words, ' ')
-  else
-    return true, sel_part:get_content_oneline()
   end
+  return true, sel_part:get_content_oneline()
 end
 
 local function default_conversion(task, input)