From ff9ed1d7aa08de8615f684433042f006b1400747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 26 Aug 2009 21:54:43 +0200 Subject: [PATCH] Preprocessor: better handling of pragma asm and pragma endasm --- src/preprocessor.cpp | 4 ++-- test/testpreprocessor.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/preprocessor.cpp b/src/preprocessor.cpp index d911e565e..3e49809b9 100644 --- a/src/preprocessor.cpp +++ b/src/preprocessor.cpp @@ -905,14 +905,14 @@ std::string Preprocessor::getcode(const std::string &filedata, std::string cfg, std::string line; while (getline(istr, line)) { - if (line == "#pragma asm") + if (line.substr(0, 11) == "#pragma asm") { ret << "\n"; bool found_end = false; while (getline(istr, line)) { ret << "\n"; - if (line == "#pragma endasm") + if (line.substr(0, 14) == "#pragma endasm") { found_end = true; break; diff --git a/test/testpreprocessor.cpp b/test/testpreprocessor.cpp index a9edb4137..c51d9f7bf 100644 --- a/test/testpreprocessor.cpp +++ b/test/testpreprocessor.cpp @@ -1101,7 +1101,11 @@ private: const char filedata[] = "#pragma asm\n" " mov r1, 11\n" "#pragma endasm\n" - "aaa"; + "aaa\n" + "#pragma asm foo\n" + " mov r1, 11\n" + "#pragma endasm bar\n" + "bbb"; // Preprocess => actual result.. std::istringstream istr(filedata); @@ -1111,7 +1115,7 @@ private: // Compare results.. ASSERT_EQUALS(1, static_cast(actual.size())); - ASSERT_EQUALS("\n\n\naaa\n", actual[""]); + ASSERT_EQUALS("\n\n\naaa\n\n\n\nbbb\n", actual[""]); } void endifsemicolon()