aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua/lua_text.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2023-06-17 12:19:01 +0100
committerVsevolod Stakhov <vsevolod@rspamd.com>2023-06-17 12:19:01 +0100
commit99c748761b602296cb3d23a0843c68c9f7b496b5 (patch)
treeb73055e62582252fc1e66aa5b4bed744f9d72683 /src/lua/lua_text.c
parent678596c9987d1f758f4240aabb429d14b1def96b (diff)
downloadrspamd-99c748761b602296cb3d23a0843c68c9f7b496b5.tar.gz
rspamd-99c748761b602296cb3d23a0843c68c9f7b496b5.zip
[Minor] Allow to allocate rspamd_text from task
Diffstat (limited to 'src/lua/lua_text.c')
-rw-r--r--src/lua/lua_text.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lua/lua_text.c b/src/lua/lua_text.c
index bafab3c08..f911b3e6f 100644
--- a/src/lua/lua_text.c
+++ b/src/lua/lua_text.c
@@ -348,6 +348,41 @@ lua_new_text (lua_State *L, const gchar *start, gsize len, gboolean own)
return t;
}
+struct rspamd_lua_text *
+lua_new_text_task (lua_State *L, struct rspamd_task *task,
+ const gchar *start, gsize len, gboolean own)
+{
+ struct rspamd_lua_text *t;
+
+ t = lua_newuserdata (L, sizeof (*t));
+ t->flags = 0;
+
+ if (own) {
+ gchar *storage;
+
+ if (len > 0) {
+ storage = rspamd_mempool_alloc (task->task_pool, len);
+
+ if (start != NULL) {
+ memcpy (storage, start, len);
+ }
+
+ t->start = storage;
+ }
+ else {
+ t->start = "";
+ }
+ }
+ else {
+ t->start = start;
+ }
+
+ t->len = len;
+ rspamd_lua_setclass (L, "rspamd{text}", -1);
+
+ return t;
+}
+
bool
lua_is_text_binary(struct rspamd_lua_text *t)
{