diff --git a/asm-savers.h b/asm-savers.h index 78f82b1..1087fb3 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -402,7 +402,6 @@ int __ntsys_arg_function_loader(ntsys_argument_parser_t* parser) { if (select_argument(parser) == EXIT_FAILURE) return EXIT_FAILURE; } if (parser->is_rewrite == 0) *parser->file_size = ftell(parser->fp) + 1; - fflush(parser->fp); return EXIT_SUCCESS; } diff --git a/ntsys b/ntsys index 58fd453..c804488 100755 Binary files a/ntsys and b/ntsys differ diff --git a/ntsys-assembler.h b/ntsys-assembler.h index d7f6e24..d4e1dc0 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -64,13 +64,6 @@ int ntsys_compile_asm(char* filename, char* asm_out) { ntsys_error("Cannot open assembler file!"); return EXIT_FAILURE; } - FILE* fw = fopen(asm_out, "wb"); - FILE* tmp = tmpfile(); - if (fw == NULL || tmp == NULL) { - ntsys_error("Cannot create or rewrite output file!"); - fclose(fp); - return EXIT_FAILURE; - } char* st = NULL; size_t mem_pos = 0; size_t lb_size = 0; @@ -94,12 +87,17 @@ int ntsys_compile_asm(char* filename, char* asm_out) { rewind(fp); size_t labels_count = 0; dword_t fsz = 0; + FILE* tmp = tmpfile(); + if (tmp == NULL) { + ntsys_error("Cannot create or rewrite output file!"); + fclose(fp); + return EXIT_FAILURE; + } while ((st = ntsys_get_str(st, fp)) != NULL) { if (ntsys_asm_from_string(&mem_pos, st, tmp, 0, labels, labels_pos, &labels_count, &fsz) != EXIT_SUCCESS) { free(st); fclose(fp); fclose(tmp); - fclose(fw); size_t i = 0; while (i < lb_size) { if (labels[i] != NULL) free(labels[i]); @@ -111,12 +109,18 @@ int ntsys_compile_asm(char* filename, char* asm_out) { } } free(st); + fclose(tmp); rewind(fp); + FILE* fw = fopen(asm_out, "wb"); + if (fw == NULL) { + ntsys_error("Cannot create or rewrite output file!"); + fclose(fp); + return EXIT_FAILURE; + } while ((st = ntsys_get_str(st, fp)) != NULL) { if (ntsys_asm_from_string(&mem_pos, st, fw, 1, labels, labels_pos, &labels_count, &fsz) != EXIT_SUCCESS) { free(st); fclose(fp); - fclose(tmp); fclose(fw); size_t i = 0; while (i < lb_size) { @@ -128,7 +132,6 @@ int ntsys_compile_asm(char* filename, char* asm_out) { return EXIT_FAILURE; } } - fclose(tmp); fflush(fw); free(st); fclose(fp);