Allow the preprocessor to abort.
If the preprocessor encounters a problem, such as failing to load a source file or an improperly formatted define, it should be able to abort running the program.
This commit is contained in:
parent
27cde3f429
commit
b208237960
2 changed files with 10 additions and 5 deletions
|
|
@ -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. */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue