diff --git a/src/frontend/grammar.y b/src/frontend/grammar.y
index 0afbd9edb32461c00eb36f2248d0259204b1d930..ed4de830fc64cc0f091a52c43624fd325ee96e17 100644 (file)
--- a/src/frontend/grammar.y
+++ b/src/frontend/grammar.y
compare_matcher:
IDENTIFIER op expression
{
- sdb_data_t value = SDB_DATA_INIT;
- if (sdb_store_expr_eval($3, &value)) {
- sdb_object_deref(SDB_OBJ($3));
- free($1); $1 = NULL;
- sdb_fe_yyerror(&yylloc, scanner,
- YY_("syntax error, failed to evaluate expression"));
- YYABORT;
- }
- sdb_object_deref(SDB_OBJ($3));
- $$ = sdb_store_matcher_parse_cmp($1, NULL, $2, &value);
+ $$ = sdb_store_matcher_parse_cmp($1, NULL, $2, $3);
free($1); $1 = NULL;
- sdb_data_free_datum(&value);
+ sdb_object_deref(SDB_OBJ($3));
}
|
IDENTIFIER '.' IDENTIFIER op expression
{
- sdb_data_t value = SDB_DATA_INIT;
- if (sdb_store_expr_eval($5, &value)) {
- sdb_object_deref(SDB_OBJ($5));
- free($1); $1 = NULL;
- free($3); $3 = NULL;
- sdb_fe_yyerror(&yylloc, scanner,
- YY_("syntax error, failed to evaluate expression"));
- YYABORT;
- }
- sdb_object_deref(SDB_OBJ($5));
- $$ = sdb_store_matcher_parse_cmp($1, $3, $4, &value);
+ $$ = sdb_store_matcher_parse_cmp($1, $3, $4, $5);
free($1); $1 = NULL;
free($3); $3 = NULL;
- sdb_data_free_datum(&value);
+ sdb_object_deref(SDB_OBJ($5));
}
|
IDENTIFIER '.' IDENTIFIER IS NULL_T