From b01078e7a0ab330be96598bcfcb43bdaeea0cf27 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Mon, 23 Mar 2015 15:52:25 -0400 Subject: [PATCH] If my measurements are right, WAYYYY better now. Missed a huge memory leak, now like 0.34147GB, I think --- krakenGrammer.kgm | 2 +- src/Parser.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/krakenGrammer.kgm b/krakenGrammer.kgm index 7f45387..f9e9f6c 100644 --- a/krakenGrammer.kgm +++ b/krakenGrammer.kgm @@ -21,7 +21,7 @@ path_part = forward_slash alphanumeric | back_slash alphanumeric ; forward_slash = "/" ; back_slash = "\\" ; -# all for optional semicolons k +# all for optional semicolons k k line_break = " +" ; actual_white = "( | )+" | line_break | line_break actual_white | "( | )+" actual_white ; diff --git a/src/Parser.cpp b/src/Parser.cpp index 91e8742..42440b0 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -286,7 +286,9 @@ void Parser::closure(State* state) { state->remaining.push_back(currentGramRule); stateTotal = state->getTotal(); } - } + } else { + delete currentGramRule; + } } } //std::cout << state->toString() << std::endl; @@ -322,7 +324,9 @@ void Parser::addStates(std::vector< State* >* stateSets, State* state, std::queu State* newState = new State(stateSets->size()+newStates.size(),advancedRule, state); newStates.push_back(newState); } - } + } else { + delete advancedRule; + } //Also add any completed rules as reduces in the action table //See if reduce //Also, this really only needs to be done for the state's basis, but we're already iterating through, so...