Skip to content

Commit 609fea0

Browse files
committed
WIP
1 parent c30b26c commit 609fea0

File tree

4 files changed

+11
-23
lines changed

4 files changed

+11
-23
lines changed

Src/FilterEngine/FilterEngine.cpp

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,31 +39,18 @@ void FilterContext::DefaultDestructor(YYSTYPE& yystype)
3939

4040
void FilterContext::Clear()
4141
{
42-
delete now;
43-
delete today;
44-
delete rootNode;
45-
now = nullptr;
46-
today = nullptr;
47-
rootNode = nullptr;
42+
now.reset();
43+
today.reset();
44+
rootNode.reset();
4845
errorCode = 0;
4946
}
5047

5148
void FilterContext::UpdateTimestamp()
5249
{
53-
if (now)
54-
{
55-
delete now;
56-
now = nullptr;
57-
}
58-
if (today)
59-
{
60-
delete today;
61-
today = nullptr;
62-
}
63-
now = new Poco::Timestamp();
50+
now.reset(new Poco::Timestamp());
6451
Poco::LocalDateTime ldt(*now);
6552
Poco::LocalDateTime midnight(ldt.year(), ldt.month(), ldt.day(), 0, 0, 0);
66-
today = new Poco::Timestamp(midnight.timestamp());
53+
today.reset(new Poco::Timestamp(midnight.timestamp()));
6754
}
6855

6956
bool FilterEngine::Parse(const std::wstring& expression, FilterContext& ctxt)

Src/FilterEngine/FilterEngine.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#pragma once
77

88
#include <string>
9+
#include <memory>
910

1011
class CDiffContext;
1112
class DIFFITEM;
@@ -21,9 +22,9 @@ struct FilterContext
2122
void UpdateTimestamp();
2223
void DefaultDestructor(YYSTYPE& yystype);
2324
const CDiffContext* ctxt;
24-
Poco::Timestamp* now;
25-
Poco::Timestamp* today;
26-
ExprNode* rootNode;
25+
std::unique_ptr<Poco::Timestamp> now;
26+
std::unique_ptr<Poco::Timestamp> today;
27+
std::unique_ptr<ExprNode> rootNode;
2728
int errorCode;
2829
};
2930

Src/FilterEngine/FilterParser.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,7 +1063,7 @@ static YYACTIONTYPE yy_reduce(
10631063
YYMINORTYPE yylhsminor;
10641064
case 0: /* filter_expr ::= or_expr */
10651065
#line 28 "E:\\dev\\winmerge\\Src\\FilterEngine\\FilterParser.y"
1066-
{ pCtx->rootNode = yymsp[0].minor.yy0.node; }
1066+
{ pCtx->rootNode.reset(yymsp[0].minor.yy0.node); }
10671067
#line 1067 "E:\\dev\\winmerge\\Src\\FilterEngine\\FilterParser.c"
10681068
break;
10691069
case 1: /* or_expr ::= or_expr OR and_expr */

Src/FilterEngine/FilterParser.y

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
%parse_failure { pCtx->errorCode = FilterEngine::ERROR_PARSE_FAILURE; }
2626
%default_destructor { pCtx->DefaultDestructor($$); }
2727

28-
filter_expr ::= or_expr(A). { pCtx->rootNode = A.node; }
28+
filter_expr ::= or_expr(A). { pCtx->rootNode.reset(A.node); }
2929

3030
or_expr(A) ::= or_expr(B) OR and_expr(C). { A.node = new OrNode(B.node, C.node); }
3131
or_expr(A) ::= and_expr(A).

0 commit comments

Comments
 (0)