diff --git a/libtvm/tvm_preprocessor.c b/libtvm/tvm_preprocessor.c index 347da51..82286ee 100644 --- a/libtvm/tvm_preprocessor.c +++ b/libtvm/tvm_preprocessor.c @@ -22,7 +22,7 @@ int tvm_preprocess(char *src, int *src_len, tvm_tree_t **node) if(!pFile) { printf("Unable to open file \"%s\"\n", filename); - return 0; + return -1; } free(temp_str); @@ -60,7 +60,7 @@ int tvm_preprocess(char *src, int *src_len, tvm_tree_t **node) if(begin + offset >= end) { printf("Define missing arguments.\n"); - return 0; + return -1; } int length = (end - (begin + offset)); @@ -82,7 +82,7 @@ int tvm_preprocess(char *src, int *src_len, tvm_tree_t **node) if(!keystr || !valstr) { printf("Define missing arguments.\n"); - return 0; + return -1; } int err = 0; @@ -94,7 +94,7 @@ int tvm_preprocess(char *src, int *src_len, tvm_tree_t **node) if(err == 2) { printf("Multiple definitions for %s.\n", keystr); - return 0; + return -1; } /* Remove the define line so it is not processed again. */ diff --git a/libtvm/tvm_program.c b/libtvm/tvm_program.c index 7003591..ca74421 100644 --- a/libtvm/tvm_program.c +++ b/libtvm/tvm_program.c @@ -54,7 +54,12 @@ pi_interpret: tvm_fcopy(source, source_length, pFile); fclose(pFile); - while(tvm_preprocess(source, &source_length, &p->defines)); + int err = 0; + while((err = tvm_preprocess(source, &source_length, &p->defines)) > 0); + + /* The preprocessor encountered a problem. */ + if (err < 0) + return 1; tvm_lexer_t *lexer_ctx = lexer_create(); lex(lexer_ctx, source, &p->defines);