]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Project] Css: Minor adjustments
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Mar 2021 16:51:21 +0000 (16:51 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 26 Mar 2021 20:55:10 +0000 (20:55 +0000)
src/libserver/css/css.cxx
src/libserver/css/css_selector.cxx
src/libserver/logger.h
src/libserver/logger/logger.c

index bd26cee1ebe0fcf104c79de056f263a76eb4b791..17ec165fcd0e72d84c3dfdf862a432a0ebb84d41 100644 (file)
 #include "css.hxx"
 #include "contrib/robin-hood/robin_hood.h"
 #include "css_parser.hxx"
+/* Keep unit tests implementation here (it'll possibly be moved outside one day) */
 #define DOCTEST_CONFIG_IMPLEMENTATION_IN_DLL
 #define DOCTEST_CONFIG_IMPLEMENT
 #include "doctest/doctest.h"
 
+static void
+rspamd_css_dtor(void *p)
+{
+       rspamd::css::css_style_sheet *style =
+                       reinterpret_cast<rspamd::css::css_style_sheet *>(p);
+
+       delete style;
+}
+
 rspamd_css
-rspamd_css_parse_style (rspamd_mempool_t *pool, const guchar *begin, gsize len,
+rspamd_css_parse_style(rspamd_mempool_t *pool, const guchar *begin, gsize len,
                                                GError **err)
 {
        auto parse_res = rspamd::css::parse_css(pool, {(const char* )begin, len});
 
        if (parse_res.has_value()) {
-               return reinterpret_cast<rspamd_css>(parse_res.value().release());
+               /*
+                * Detach style pointer from the unique_ptr as it will be managed by
+                * C memory pool
+                */
+               auto *detached_style = reinterpret_cast<rspamd_css>(parse_res.value().release());
+               rspamd_mempool_add_destructor(pool, rspamd_css_dtor, (void *)detached_style);
+               return detached_style;
        }
        else {
                g_set_error(err, g_quark_from_static_string("css"),
index d4b578a08aecbc43eebc38c7484441900ad70abf..b198b8553bb6108391339ccb27b1197b781b7dd3 100644 (file)
@@ -87,7 +87,7 @@ auto process_selector_tokens(rspamd_mempool_t *pool,
                                        state = selector_process_state::selector_ident_consumed;
                                        break;
                                default:
-                                       msg_debug_css("cannot consume more of a selector, invalid parser token: %*s; expected start",
+                                       msg_debug_css("cannot consume more of a selector, invalid parser token: %s; expected start",
                                                        next_tok.token_type_str());
                                        can_continue = false;
                                        break;
@@ -103,7 +103,7 @@ auto process_selector_tokens(rspamd_mempool_t *pool,
                                        state = selector_process_state::selector_ident_consumed;
                                }
                                else {
-                                       msg_debug_css("cannot consume more of a selector, invalid parser token: %*s; expected ident",
+                                       msg_debug_css("cannot consume more of a selector, invalid parser token: %s; expected ident",
                                                        next_tok.token_type_str());
                                        can_continue = false;
                                }
index 9bf7015c07fbca1fb78e3ad2a6962dc1333cc5a6..c5e63c0fbe548632339836befb08f328c58c2fb6 100644 (file)
@@ -184,6 +184,9 @@ bool rspamd_conditional_debug_fast_num_id (rspamd_logger_t *logger,
                                                                        guint mod_id,
                                                                        const gchar *module, guint64 id,
                                                                        const gchar *function, const gchar *fmt, ...);
+gboolean rspamd_logger_need_log (rspamd_logger_t *rspamd_log,
+                                                                GLogLevelFlags log_level,
+                                                                guint module_id);
 
 /**
  * Function with variable number of arguments support that uses static default logger
index 21c92bbb9ba305a986d7462b5ddfe319c44bb234..0ab6c478959a99755e0956706b206f35d9136ea8 100644 (file)
@@ -300,7 +300,7 @@ rspamd_log_on_fork (GQuark ptype, struct rspamd_config *cfg,
        }
 }
 
-static inline gboolean
+inline gboolean
 rspamd_logger_need_log (rspamd_logger_t *rspamd_log, GLogLevelFlags log_level,
                guint module_id)
 {