Index: trunk/src_plugins/io_bxl/read.c =================================================================== --- trunk/src_plugins/io_bxl/read.c (revision 30831) +++ trunk/src_plugins/io_bxl/read.c (revision 30832) @@ -657,6 +657,7 @@ pcb_bxl_ureglex_t lctx; pcb_bxl_yyctx_t yyctx; pcb_bxl_ctx_t bctx; + pcb_bxl_STYPE lval; f = pcb_fopen(hl, filename, "rb"); if (f == NULL) @@ -680,7 +681,6 @@ /* feed the lexer */ for(n = 0; n < ilen; n++) { - pcb_bxl_STYPE lval; tok = pcb_bxl_lex_char(&lctx, &lval, hctx.out[n]); if (tok == UREGLEX_MORE) continue; @@ -707,6 +707,7 @@ pcb_subc_reg(data, bctx.subc); error:; + pcb_bxl_parse(&yyctx, &bctx, 0, &lval); pcb_bxl_uninit(&bctx); fclose(f); return ret; Index: trunk/tests/io_bxl/test_parse.c =================================================================== --- trunk/tests/io_bxl/test_parse.c (revision 30831) +++ trunk/tests/io_bxl/test_parse.c (revision 30832) @@ -19,12 +19,12 @@ pcb_bxl_ureglex_t lctx; pcb_bxl_yyctx_t yyctx; pcb_bxl_ctx_t bctx; + pcb_bxl_STYPE lval; pcb_bxl_lex_init(&lctx, pcb_bxl_rules); pcb_bxl_parse_init(&yyctx); while((chr = fgetc(stdin)) > 0) { - pcb_bxl_STYPE lval; int res = pcb_bxl_lex_char(&lctx, &lval, chr); if (res == UREGLEX_MORE) continue; @@ -68,5 +68,7 @@ if (bad) printf("Parse failed.\n"); + pcb_bxl_parse(&yyctx, &bctx, 0, &lval); + return 0; }