mirror of
https://github.com/zeek/zeek.git
synced 2025-10-10 10:38:20 +00:00
Refactor Analyzer::AddChildAnalyzer and usages.
Make feedback available regarding whether adding a child analyzer fails because one of the same type already exists (so one can avoid invalid pointer access of a delete'd analyzer).
This commit is contained in:
parent
bb8f102b2c
commit
a3b963ad4e
4 changed files with 19 additions and 15 deletions
|
@ -378,13 +378,13 @@ void Analyzer::ForwardEndOfData(bool orig)
|
|||
AppendNewChildren();
|
||||
}
|
||||
|
||||
void Analyzer::AddChildAnalyzer(Analyzer* analyzer, bool init)
|
||||
bool Analyzer::AddChildAnalyzer(Analyzer* analyzer, bool init)
|
||||
{
|
||||
if ( HasChildAnalyzer(analyzer->GetAnalyzerTag()) )
|
||||
{
|
||||
analyzer->Done();
|
||||
delete analyzer;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// We add new children to new_children first. They are then
|
||||
|
@ -401,6 +401,7 @@ void Analyzer::AddChildAnalyzer(Analyzer* analyzer, bool init)
|
|||
|
||||
DBG_LOG(DBG_ANALYZER, "%s added child %s",
|
||||
fmt_analyzer(this).c_str(), fmt_analyzer(analyzer).c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
Analyzer* Analyzer::AddChildAnalyzer(Tag analyzer)
|
||||
|
@ -409,10 +410,8 @@ Analyzer* Analyzer::AddChildAnalyzer(Tag analyzer)
|
|||
{
|
||||
Analyzer* a = analyzer_mgr->InstantiateAnalyzer(analyzer, conn);
|
||||
|
||||
if ( a )
|
||||
AddChildAnalyzer(a);
|
||||
|
||||
return a;
|
||||
if ( a && AddChildAnalyzer(a) )
|
||||
return a;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue