]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Do not traverse empty HTML tree
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 19 Aug 2016 16:13:00 +0000 (17:13 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 19 Aug 2016 16:13:00 +0000 (17:13 +0100)
src/lua/lua_html.c

index f21432e9f662c8dfb1da3c86ca869f2c73f51fd5..bad085450532143f772f8c6b3b8235358619ba2d 100644 (file)
@@ -438,26 +438,28 @@ lua_html_foreach_tag (lua_State *L)
        tagname = luaL_checkstring (L, 2);
 
        if (hc && tagname && lua_isfunction (L, 3)) {
-               if (strcmp (tagname, "any") == 0) {
-                       id = -1;
-               }
-               else {
-                       id = rspamd_html_tag_by_name (tagname);
+               if (hc->html_tags) {
+                       if (strcmp (tagname, "any") == 0) {
+                               id = -1;
+                       }
+                       else {
+                               id = rspamd_html_tag_by_name (tagname);
 
-                       if (id == -1) {
-                               return luaL_error (L, "invalid tagname: %s", tagname);
+                               if (id == -1) {
+                                       return luaL_error (L, "invalid tagname: %s", tagname);
+                               }
                        }
-               }
 
-               lua_pushvalue (L, 3);
-               ud.cbref = luaL_ref (L, LUA_REGISTRYINDEX);
-               ud.L = L;
-               ud.tag_id = id;
+                       lua_pushvalue (L, 3);
+                       ud.cbref = luaL_ref (L, LUA_REGISTRYINDEX);
+                       ud.L = L;
+                       ud.tag_id = id;
 
-               g_node_traverse (hc->html_tags, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
-                               lua_html_node_foreach_cb, &ud);
+                       g_node_traverse (hc->html_tags, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
+                                       lua_html_node_foreach_cb, &ud);
 
-               luaL_unref (L, LUA_REGISTRYINDEX, ud.cbref);
+                       luaL_unref (L, LUA_REGISTRYINDEX, ud.cbref);
+               }
        }
        else {
                return luaL_error (L, "invalid arguments");