From 86c4188320688fbbd98eee59dc97f52e884cc72a Mon Sep 17 00:00:00 2001 From: xolatile Date: Sat, 27 Jul 2024 11:10:17 -0400 Subject: [PATCH] Added error return value... --- source/assembler.c | 7 ++++--- source/assembler.h | 2 +- source/compile.c | 8 +++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/source/assembler.c b/source/assembler.c index 9457556..178895b 100644 --- a/source/assembler.c +++ b/source/assembler.c @@ -416,7 +416,7 @@ unsigned char * text_sector_byte = NULL; int was_instruction_array_empty = 0; -void assemble (unsigned int count, unsigned int * array) { +int assemble (unsigned int count, unsigned int * array) { unsigned int index; if ((count == 0) || (array == NULL)) { @@ -463,8 +463,7 @@ void assemble (unsigned int count, unsigned int * array) { case ENTER: index += build_enter (& array [index]); break; case POP: index += build_pop (& array [index]); break; case PUSH: index += build_push (& array [index]); break; - // IS IT BAD TO JUST QUIT? - default: exit ((int) array [index]); + default: return (EXIT_FAILURE); } } @@ -480,4 +479,6 @@ void assemble (unsigned int count, unsigned int * array) { replace (& text_sector_byte [get], (unsigned char *) & set, sizeof (set)); } + + return (EXIT_SUCCESS); } diff --git a/source/assembler.h b/source/assembler.h index b4c6608..761c100 100644 --- a/source/assembler.h +++ b/source/assembler.h @@ -41,6 +41,6 @@ extern unsigned char * text_sector_byte; extern int was_instruction_array_empty; -extern void assemble (unsigned int count, unsigned int * array); +extern int assemble (unsigned int count, unsigned int * array); #endif diff --git a/source/compile.c b/source/compile.c index 14f3a23..02dba00 100644 --- a/source/compile.c +++ b/source/compile.c @@ -96,13 +96,15 @@ int compile(void) { dump_variables_to_assembler(); - assemble(token_count, token_array); + if (assemble(token_count, token_array)) { + return 1; + } create_header(); - FILE * output_file = fopen(output_file_name, "w"); + FILE * output_file = fopen(output_file_name, "w"); check(write_output(output_file)); - fclose(output_file); + fclose(output_file); make_executable(output_file_name);