aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-11-26 19:52:55 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-11-26 19:52:55 +0000
commit8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf (patch)
treec181585174f7741f27a5286db8c48cd6597cdfaa /src
parent088aaea40e1c7cd9087e21605c26d6bd439b5ef0 (diff)
downloadrspamd-8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf.tar.gz
rspamd-8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf.zip
[Minor] Support NANable numbers
Diffstat (limited to 'src')
-rw-r--r--src/lua/lua_common.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lua/lua_common.c b/src/lua/lua_common.c
index 0e577326a..5a1cc7101 100644
--- a/src/lua/lua_common.c
+++ b/src/lua/lua_common.c
@@ -17,6 +17,7 @@
#include "lua/global_functions.lua.h"
#include "lptree.h"
#include "utlist.h"
+#include <math.h>
/* Lua module init function */
#define MODULE_INIT_FUNC "module_init"
@@ -712,6 +713,34 @@ rspamd_lua_parse_table_arguments (lua_State *L, gint pos,
}
break;
+ case 'D':
+ if (t == LUA_TNUMBER) {
+ *(va_arg (ap, gdouble *)) = lua_tonumber (L, idx);
+ }
+ else if (t == LUA_TNIL || t == LUA_TNONE) {
+ failed = TRUE;
+ *(va_arg (ap, gdouble *)) = NAN;
+ }
+ else {
+ g_set_error (err,
+ lua_error_quark (),
+ 1,
+ "bad type for key:"
+ " %.*s: '%s', '%s' is expected",
+ (gint) keylen,
+ key,
+ lua_typename (L, lua_type (L, idx)),
+ "double");
+ va_end (ap);
+
+ return FALSE;
+ }
+
+ if (is_table) {
+ lua_pop (L, 1);
+ }
+ break;
+
case 'V':
valuelen = va_arg (ap, gsize *);