Skip to content

Commit 061fba4

Browse files
committed
search string parser: fix -a expression (fixes #4025)
1 parent 890b092 commit 061fba4

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/core/qgssearchstringparser.yy

+14-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,20 @@ scalar_exp:
176176
| scalar_exp '-' scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opMINUS,$1, $3); joinTmpNodes($$,$1,$3); }
177177
| '(' scalar_exp ')' { $$ = $2; }
178178
| '+' scalar_exp %prec UMINUS { $$ = $2; }
179-
| '-' scalar_exp %prec UMINUS { $$ = $2; if ($$->type() == QgsSearchTreeNode::tNumber) $$->setNumber(- $$->number()); }
179+
| '-' scalar_exp %prec UMINUS
180+
{
181+
if ( $2->type() == QgsSearchTreeNode::tNumber )
182+
{
183+
$$ = $2;
184+
$$->setNumber(- $$->number());
185+
}
186+
else
187+
{
188+
QgsSearchTreeNode *null = new QgsSearchTreeNode( 0.0 );
189+
$$ = new QgsSearchTreeNode( QgsSearchTreeNode::opMINUS, null, $2);
190+
joinTmpNodes($$, $2, 0);
191+
}
192+
}
180193
| scalar_exp CONCAT scalar_exp { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opCONCAT, $1, $3); joinTmpNodes($$, $1, $3); }
181194
| ROWNUM { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opROWNUM, 0, 0); addToTmpNodes($$); }
182195
| AREA { $$ = new QgsSearchTreeNode(QgsSearchTreeNode::opAREA, 0, 0); addToTmpNodes($$); }

0 commit comments

Comments
 (0)