Makes Rule a shared pointer

This commit is contained in:
Felipe Zimmerle
2018-11-22 10:48:33 -03:00
parent f1d22f9b02
commit 9d158611cf
16 changed files with 930 additions and 935 deletions

View File

@@ -1076,16 +1076,15 @@ expression:
}
Operator *op = $3.release();
Rule *rule = new Rule(
std::unique_ptr<Rule> rule(new Rule(
/* op */ op,
/* variables */ v,
/* actions */ a,
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
));
if (driver.addSecRule(rule) == false) {
delete rule;
if (driver.addSecRule(std::move(rule)) == false) {
YYERROR;
}
}
@@ -1096,15 +1095,14 @@ expression:
v->push_back(i.release());
}
Rule *rule = new Rule(
std::unique_ptr<Rule> rule(new Rule(
/* op */ $3.release(),
/* variables */ v,
/* actions */ NULL,
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
if (driver.addSecRule(rule) == false) {
delete rule;
));
if (driver.addSecRule(std::move(rule)) == false) {
YYERROR;
}
}
@@ -1114,14 +1112,14 @@ expression:
for (auto &i : *$2.get()) {
a->push_back(i.release());
}
Rule *rule = new Rule(
std::unique_ptr<Rule> rule(new Rule(
/* op */ NULL,
/* variables */ NULL,
/* actions */ a,
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
driver.addSecAction(rule);
));
driver.addSecAction(std::move(rule));
}
| DIRECTIVE_SECRULESCRIPT actions
{
@@ -1130,20 +1128,18 @@ expression:
for (auto &i : *$2.get()) {
a->push_back(i.release());
}
RuleScript *r = new RuleScript(
std::unique_ptr<RuleScript> r(new RuleScript(
/* path to script */ $1,
/* actions */ a,
/* file name */ *@1.end.filename,
/* line number */ @1.end.line
);
));
if (r->init(&err) == false) {
driver.error(@0, "Failed to load script: " + err);
delete r;
YYERROR;
}
if (driver.addSecRuleScript(r) == false) {
delete r;
if (driver.addSecRuleScript(std::move(r)) == false) {
YYERROR;
}
}