Skip to content

Commit 4564ff6

Browse files
committed
fixed #387 - do not undefine source-level defines via -U
1 parent 0ab783c commit 4564ff6

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
@@ -3445,13 +3445,11 @@ void simplecpp::preprocess(simplecpp::TokenList &output, const simplecpp::TokenL
34453445
continue;
34463446
try {
34473447
const Macro &macro = Macro(rawtok->previous, files);
3448-
if (dui.undefined.find(macro.name()) == dui.undefined.end()) {
3449-
const MacroMap::iterator it = macros.find(macro.name());
3450-
if (it == macros.end())
3451-
macros.insert(std::pair<TokenString, Macro>(macro.name(), macro));
3452-
else
3453-
it->second = macro;
3454-
}
3448+
const MacroMap::iterator it = macros.find(macro.name());
3449+
if (it == macros.end())
3450+
macros.insert(std::pair<TokenString, Macro>(macro.name(), macro));
3451+
else
3452+
it->second = macro;
34553453
} catch (const std::runtime_error &) {
34563454
if (outputList) {
34573455
simplecpp::Output err(files);

test.cpp

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

2477+
static void userundef_src()
2478+
{
2479+
const char code[] =
2480+
"#define A\n"
2481+
"#ifdef A\n"
2482+
"123\n"
2483+
"#endif\n";
2484+
simplecpp::DUI dui;
2485+
dui.undefined.insert("A");
2486+
ASSERT_EQUALS("\n\n123", preprocess(code, dui));
2487+
}
2488+
24772489
static void utf8()
24782490
{
24792491
ASSERT_EQUALS("123", readfile("\xEF\xBB\xBF 123"));
@@ -3124,6 +3136,7 @@ int main(int argc, char **argv)
31243136
TEST_CASE(undef);
31253137

31263138
TEST_CASE(userdef);
3139+
TEST_CASE(userundef_src);
31273140

31283141
// utf/unicode
31293142
TEST_CASE(utf8);

0 commit comments

Comments
 (0)