diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2023-06-17 12:19:01 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2023-06-17 12:19:01 +0100 |
commit | 99c748761b602296cb3d23a0843c68c9f7b496b5 (patch) | |
tree | b73055e62582252fc1e66aa5b4bed744f9d72683 /src/lua/lua_text.c | |
parent | 678596c9987d1f758f4240aabb429d14b1def96b (diff) | |
download | rspamd-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.c | 35 |
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) { |