+ ret = yylex(yyscanner);
+ if (ret < 0) {
+ ret = -E_LLS_YY_LEX;
+ if (errctx) {
+ *errctx = malloc(100);
+ if (*errctx)
+ sprintf(*errctx, "error at line %d",
+ yyget_lineno(yyscanner));
+ }
+ }
+ yy_delete_buffer(yybs, yyscanner);
+destroy:
+ yylex_destroy(yyscanner);
+free_argv:
+ if (ret < 0)
+ lls_free_argv(extra.argv);
+ else {
+ *result = extra.argv;
+ ret = extra.argc;
+ }
+ return ret;