From 7f6d425c155784cda635d847fdfac95a5cb403e6 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 3 Feb 2009 17:31:37 -0500 Subject: [PATCH] Fixed error reporting in assembler. --- mojoshader_assembler.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mojoshader_assembler.c b/mojoshader_assembler.c index 0cca0be2..26c0a9bb 100644 --- a/mojoshader_assembler.c +++ b/mojoshader_assembler.c @@ -100,6 +100,8 @@ static void failf(Context *ctx, const char *fmt, ...) unsigned int linenum = 0; int error_position = 0; + ctx->isfail = 1; + switch (ctx->parse_phase) { case MOJOSHADER_PARSEPHASE_NOTSTARTED: @@ -2006,16 +2008,23 @@ const MOJOSHADER_parseData *MOJOSHADER_assemble(const char *source, parse_version_token(ctx); output_comments(ctx, comments, comment_count, symbols, symbol_count); + if (isfail(ctx)) + { + failed = 1; + ctx->isfail = 0; + skip_line(ctx); // start fresh on next line. + } // if + // parse out the rest of the tokens after the version token... while ((nexttoken(ctx, 1, 1, 0, 1)) && (!ctx->eof)) { + parse_token(ctx); if (isfail(ctx)) { failed = 1; ctx->isfail = 0; skip_line(ctx); // start fresh on next line. } // if - parse_token(ctx); } // while ctx->isfail = failed;