From 8e15a9e79d538d89d60eba388bef9c8596e4aca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 23 Apr 2009 21:59:26 +0200 Subject: [PATCH] xml generator: handle '<' and '>' (#263) --- src/errorlogger.cpp | 22 +++++++++++++++++++--- test/testcppcheck.cpp | 11 +++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/errorlogger.cpp b/src/errorlogger.cpp index 568e6c914..d08b47193 100644 --- a/src/errorlogger.cpp +++ b/src/errorlogger.cpp @@ -118,11 +118,27 @@ std::string ErrorLogger::ErrorMessage::toXML() const { std::ostringstream xml; xml << "", pos)) != std::string::npos) + { + if (m[pos] == '<') + m.insert(pos+1, "<"); + if (m[pos] == '>') + m.insert(pos+1, ">"); + m.erase(pos, 1); + } + + xml << " msg=\"" << m << "\""; xml << "/>"; return xml.str(); } diff --git a/test/testcppcheck.cpp b/test/testcppcheck.cpp index e3a5e24be..97c11bc23 100644 --- a/test/testcppcheck.cpp +++ b/test/testcppcheck.cpp @@ -50,6 +50,8 @@ private: { TEST_CASE(linenumbers); // TEST_CASE(linenumbers2); + + TEST_CASE(xml); } void linenumbers() @@ -80,6 +82,15 @@ private: // Compare results.. ASSERT_EQUALS("[file.cpp:5]: (error) Memory leak: string\n", errout.str()); } + + + void xml() + { + // Test the errorlogger.. + ErrorLogger::ErrorMessage errmsg; + errmsg._msg = "abef"; + ASSERT_EQUALS("", errmsg.toXML()); + } }; REGISTER_TEST(TestCppcheck)