diff --git a/simplecpp.cpp b/simplecpp.cpp index 67e59ab..dedd8d6 100755 --- a/simplecpp.cpp +++ b/simplecpp.cpp @@ -3445,13 +3445,11 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL continue; try { const Macro ¯o = Macro(rawtok->previous, files); - if (dui.undefined.find(macro.name()) == dui.undefined.end()) { - const MacroMap::iterator it = macros.find(macro.name()); - if (it == macros.end()) - macros.insert(std::pair(macro.name(), macro)); - else - it->second = macro; - } + const MacroMap::iterator it = macros.find(macro.name()); + if (it == macros.end()) + macros.insert(std::pair(macro.name(), macro)); + else + it->second = macro; } catch (const std::runtime_error &) { if (outputList) { simplecpp::Output err(files); diff --git a/test.cpp b/test.cpp index 8ae2fa2..11f91d7 100644 --- a/test.cpp +++ b/test.cpp @@ -2474,6 +2474,18 @@ static void userdef() ASSERT_EQUALS("\n123", preprocess(code, dui)); } +static void userundef_src() +{ + const char code[] = + "#define A\n" + "#ifdef A\n" + "123\n" + "#endif\n"; + simplecpp::DUI dui; + dui.undefined.insert("A"); + ASSERT_EQUALS("\n\n123", preprocess(code, dui)); +} + static void utf8() { ASSERT_EQUALS("123", readfile("\xEF\xBB\xBF 123")); @@ -3124,6 +3136,7 @@ int main(int argc, char **argv) TEST_CASE(undef); TEST_CASE(userdef); + TEST_CASE(userundef_src); // utf/unicode TEST_CASE(utf8);