--- l2_spec_parse.y 2003/01/06 11:41:52 1.10
+++ l2_spec_parse.y 2003/02/11 07:51:27 1.11
@@ -169,8 +169,10 @@
unsigned int levelmask;
if ((CTX->rv = l2_util_s2l($1, strlen($1), ',', &levelmask)) != L2_OK) {
l2_spec_error(CTX, CTX->rv, &yylloc, "invalid level '%s'", $1);
+ free($1);
YYERROR;
}
+ free($1);
$$ = L2_LEVEL_UPTO(levelmask);
}
| '(' channel_level_mask ')' {
@@ -184,16 +186,20 @@
unsigned int levelmask;
if ((CTX->rv = l2_util_s2l($1, strlen($1), ',', &levelmask)) != L2_OK) {
l2_spec_error(CTX, CTX->rv, &yylloc, "invalid level '%s'", $1);
+ free($1);
YYERROR;
}
+ free($1);
$$ = levelmask;
}
| T_ID '|' channel_level_mask {
unsigned int levelmask;
if ((CTX->rv = l2_util_s2l($1, strlen($1), ',', &levelmask)) != L2_OK) {
l2_spec_error(CTX, CTX->rv, &yylloc, "invalid level '%s'", $1);
+ free($1);
YYERROR;
}
+ free($1);
$$ = levelmask | $3;
}
;
@@ -204,8 +210,10 @@
l2_channel_t *ch;
if ((CTX->rv = l2_channel_create(&ch, CTX->env, $1)) != L2_OK) {
l2_spec_error(CTX, CTX->rv, &yylloc, "failed to create channel '%s'", $1);
+ free($1);
YYERROR;
}
+ free($1);
$$ = ch;
/* provide channel to channel_param rule below because it does
not know where on the token stack our $$ is because it is a
@@ -237,8 +245,12 @@
: T_ID '=' { l2_spec_scan_push(CTX, "SS_PARAM"); } T_PARAM { l2_spec_scan_pop(CTX); } {
if ((CTX->rv = l2_channel_configure(CTX->chTmp, "%s=\"%s\"", $1, $4)) != L2_OK) {
l2_spec_error(CTX, CTX->rv, &yylloc, "failed to configure channel with '%s=\"%s\"'", $1, $4);
+ free($1);
+ free($4);
YYERROR;
}
+ free($1);
+ free($4);
}
;
|