Fix #1455 (Preprocessor: Wrong line number in "No pair for character" error)
http://sourceforge.net/apps/trac/cppcheck/ticket/1455
This commit is contained in:
parent
54bf67e766
commit
9b6336013b
|
@ -1856,10 +1856,11 @@ std::string Preprocessor::expandMacros(const std::string &code, std::string file
|
|||
std::string::size_type pos = 0;
|
||||
|
||||
// scan line to see if there are any macros to expand..
|
||||
unsigned int tmpLinenr = 0;
|
||||
while (pos < line.size())
|
||||
{
|
||||
if (line[pos] == '\n')
|
||||
++linenr;
|
||||
++tmpLinenr;
|
||||
|
||||
// skip strings..
|
||||
if (line[pos] == '\"' || line[pos] == '\'')
|
||||
|
@ -1872,7 +1873,7 @@ std::string Preprocessor::expandMacros(const std::string &code, std::string file
|
|||
if (pos >= line.size())
|
||||
{
|
||||
writeError(filename,
|
||||
linenr,
|
||||
linenr + tmpLinenr,
|
||||
errorLogger,
|
||||
"noQuoteCharPair",
|
||||
std::string("No pair for character (") + ch + "). Can't process file. File is either invalid or unicode, which is currently not supported.");
|
||||
|
@ -2031,7 +2032,7 @@ std::string Preprocessor::expandMacros(const std::string &code, std::string file
|
|||
{
|
||||
// Syntax error in code
|
||||
writeError(filename,
|
||||
linenr,
|
||||
linenr + tmpLinenr,
|
||||
errorLogger,
|
||||
"syntaxError",
|
||||
std::string("Syntax error. Not enough parameters for macro '") + macro->name() + "'.");
|
||||
|
|
|
@ -1667,6 +1667,23 @@ private:
|
|||
ASSERT_EQUALS("\n\nint a = 1;\n", actual);
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
{
|
||||
const char filedata[] = "void foo()\n"
|
||||
"{\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"int a = 0;\n"
|
||||
"printf(Text\");\n"
|
||||
"}\n";
|
||||
|
||||
// expand macros..
|
||||
errout.str("");
|
||||
const std::string actual(OurPreprocessor::expandMacros(filedata, this));
|
||||
|
||||
ASSERT_EQUALS("[file.cpp:7]: (error) No pair for character (\"). Can't process file. File is either invalid or unicode, which is currently not supported.\n", errout.str());
|
||||
}
|
||||
}
|
||||
|
||||
void unicodeInCode()
|
||||
|
|
Loading…
Reference in New Issue