macroprocessor: fix memory leak

issue#70
Houtan Bastani 2015-02-25 09:03:48 +01:00
parent 5498783e4c
commit 3cdbc65607
1 changed files with 9 additions and 9 deletions

View File

@ -89,22 +89,22 @@ CONT \\\\
yylloc->step(); yylloc->step();
// Get variable name // Get variable name
string *modvarname = new string(yytext); string modvarname = string(yytext);
int dblq_idx1 = modvarname->find("include"); int dblq_idx1 = modvarname.find("include");
modvarname->erase(0, dblq_idx1 + 7); modvarname.erase(0, dblq_idx1 + 7);
modvarname->erase(0, modvarname->find_first_not_of(" \t")); modvarname.erase(0, modvarname.find_first_not_of(" \t"));
size_t p = modvarname->find_last_not_of(" \t\n\r"); size_t p = modvarname.find_last_not_of(" \t\n\r");
if (string::npos != p) if (string::npos != p)
modvarname->erase(p+1); modvarname.erase(p+1);
string *filename; string *filename = NULL;
try try
{ {
filename = new string(driver.get_variable(*modvarname)->toString()); filename = new string(driver.get_variable(modvarname)->toString());
} }
catch(MacroDriver::UnknownVariable(&e)) catch(MacroDriver::UnknownVariable(&e))
{ {
driver.error(*yylloc, "Unknown variable: " + *modvarname); driver.error(*yylloc, "Unknown variable: " + modvarname);
} }
create_include_context(filename, yylloc, driver); create_include_context(filename, yylloc, driver);
BEGIN(INITIAL); BEGIN(INITIAL);