]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Lua_tensor: Implement serialisation
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Aug 2020 13:18:47 +0000 (14:18 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 6 Aug 2020 13:18:47 +0000 (14:18 +0100)
src/lua/lua_tensor.c

index 85aaa2e955f0829bc7909648ac3c57ce4534844f..9b85779d79454dbb6b98b536c4223a0b9256d7b2 100644 (file)
@@ -236,7 +236,20 @@ lua_tensor_save (lua_State *L)
        struct rspamd_lua_tensor *t = lua_check_tensor (L, 1);
 
        if (t) {
+               gsize sz = sizeof (gint) * 4 + t->size * sizeof (rspamd_tensor_num_t);
+               guchar *data;
 
+               struct rspamd_lua_text *out = lua_new_text (L, NULL, 0, TRUE);
+
+               data = g_malloc (sz);
+               memcpy (data, &t->ndims, sizeof (int));
+               memcpy (data + sizeof (int), &t->size, sizeof (int));
+               memcpy (data + 2 * sizeof (int), t->dim, sizeof (int) * 2);
+               memcpy (data + 4 * sizeof (int), t->data,
+                               t->size * sizeof (rspamd_tensor_num_t));
+
+               out->start = (const gchar *)data;
+               out->len = sz;
        }
        else {
                return luaL_error (L, "invalid arguments");