diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-11-26 19:52:55 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-11-26 19:52:55 +0000 |
commit | 8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf (patch) | |
tree | c181585174f7741f27a5286db8c48cd6597cdfaa /src | |
parent | 088aaea40e1c7cd9087e21605c26d6bd439b5ef0 (diff) | |
download | rspamd-8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf.tar.gz rspamd-8579b7a72a8ebe3ea8352a2b6ce274e71128fbcf.zip |
[Minor] Support NANable numbers
Diffstat (limited to 'src')
-rw-r--r-- | src/lua/lua_common.c | 29 |
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 *); |