From: Vsevolod Stakhov Date: Thu, 6 Aug 2020 13:18:47 +0000 (+0100) Subject: [Minor] Lua_tensor: Implement serialisation X-Git-Tag: 2.6~167 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ac9efbac6cd81dd7afb8bfb5672d5d7592af26d;p=thirdparty%2Frspamd.git [Minor] Lua_tensor: Implement serialisation --- diff --git a/src/lua/lua_tensor.c b/src/lua/lua_tensor.c index 85aaa2e955..9b85779d79 100644 --- a/src/lua/lua_tensor.c +++ b/src/lua/lua_tensor.c @@ -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");