From a0a87e443fc71342bcec0a05bc3ad9f08bbdc36d Mon Sep 17 00:00:00 2001 From: Jason Dellaluce Date: Thu, 17 Mar 2022 17:35:50 +0000 Subject: [PATCH] update(userspace/engine): support undefining macros Signed-off-by: Jason Dellaluce --- userspace/engine/filter_macro_resolver.cpp | 3 +-- userspace/engine/filter_macro_resolver.h | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/userspace/engine/filter_macro_resolver.cpp b/userspace/engine/filter_macro_resolver.cpp index c8b72460..74dd9277 100644 --- a/userspace/engine/filter_macro_resolver.cpp +++ b/userspace/engine/filter_macro_resolver.cpp @@ -38,7 +38,6 @@ void filter_macro_resolver::set_macro( string name, shared_ptr macro) { - auto it = m_macros.find(name); m_macros[name] = macro; } @@ -120,7 +119,7 @@ void filter_macro_resolver::visit(ast::value_expr* e) // of identier-only children from either a 'not', // an 'and' or an 'or'. auto macro = m_macros.find(e->value); - if (macro != m_macros.end()) + if (macro != m_macros.end() && macro->second) // skip null-ptr macros { ast::expr* new_node = ast::clone(macro->second.get()); new_node->accept(this); // this sets m_last_node diff --git a/userspace/engine/filter_macro_resolver.h b/userspace/engine/filter_macro_resolver.h index a8d9619f..1087a80b 100644 --- a/userspace/engine/filter_macro_resolver.h +++ b/userspace/engine/filter_macro_resolver.h @@ -44,7 +44,8 @@ class filter_macro_resolver: private libsinsp::filter::ast::expr_visitor /*! \brief Defines a new macro to be substituted in filters. If called multiple times for the same macro name, the previous definition - gets overridden. + gets overridden. A macro can be undefined by setting a null + AST pointer. \param name The name of the macro. \param macro The AST of the macro. */