Index: ossp-pkg/l2/l2_spec_parse.y RCS File: /v/ossp/cvs/ossp-pkg/l2/l2_spec_parse.y,v rcsdiff -q -kk '-r1.10' '-r1.11' -u '/v/ossp/cvs/ossp-pkg/l2/l2_spec_parse.y,v' 2>/dev/null --- 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); } ; Index: ossp-pkg/l2/l2_test.c RCS File: /v/ossp/cvs/ossp-pkg/l2/l2_test.c,v rcsdiff -q -kk '-r1.52' '-r1.53' -u '/v/ossp/cvs/ossp-pkg/l2/l2_test.c,v' 2>/dev/null --- l2_test.c 2003/01/27 16:01:35 1.52 +++ l2_test.c 2003/02/11 07:51:28 1.53 @@ -170,6 +170,10 @@ if ((rv = l2_channel_destroy(ch)) != L2_OK) die(env, rv, "failed to destroy channel tree"); + /* destroy environment */ + if ((rv = l2_env_destroy(env)) != L2_OK) + die(env, rv, "failed to destroy environment"); + return 0; }