Skip to content

Commit 917a3cd

Browse files
committed
fixed #387 - do not undefine source-level defines via -U
1 parent 3deeb91 commit 917a3cd

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

simplecpp.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3418,13 +3418,11 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34183418
continue;
34193419
try {
34203420
const Macro &macro = Macro(rawtok->previous, files);
3421-
if (dui.undefined.find(macro.name()) == dui.undefined.end()) {
3422-
const MacroMap::iterator it = macros.find(macro.name());
3423-
if (it == macros.end())
3424-
macros.insert(std::pair<TokenString, Macro>(macro.name(), macro));
3425-
else
3426-
it->second = macro;
3427-
}
3421+
const MacroMap::iterator it = macros.find(macro.name());
3422+
if (it == macros.end())
3423+
macros.insert(std::pair<TokenString, Macro>(macro.name(), macro));
3424+
else
3425+
it->second = macro;
34283426
} catch (const std::runtime_error &) {
34293427
if (outputList) {
34303428
simplecpp::Output err(files);

test.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2772,6 +2772,18 @@ static void userdef()
27722772
ASSERT_EQUALS("\n123", preprocess(code, dui));
27732773
}
27742774

2775+
static void userundef_src()
2776+
{
2777+
const char code[] =
2778+
"#define A\n"
2779+
"#ifdef A\n"
2780+
"123\n"
2781+
"#endif\n";
2782+
simplecpp::DUI dui;
2783+
dui.undefined.insert("A");
2784+
ASSERT_EQUALS("\n\n123", preprocess(code, dui));
2785+
}
2786+
27752787
static void utf8()
27762788
{
27772789
ASSERT_EQUALS("123", readfile("\xEF\xBB\xBF 123"));
@@ -3483,6 +3495,7 @@ int main(int argc, char **argv)
34833495
TEST_CASE(undef);
34843496

34853497
TEST_CASE(userdef);
3498+
TEST_CASE(userundef_src);
34863499

34873500
// utf/unicode
34883501
TEST_CASE(utf8);

0 commit comments

Comments
 (0)