better error handling + segfault safe frees

This commit is contained in:
Aaro Koivukangas
2024-08-16 18:39:33 +02:00
parent dc37278588
commit 90b629b806
12 changed files with 163 additions and 97 deletions
+12
View File
@@ -0,0 +1,12 @@
#ifndef ERROR_H
#define ERROR_H
typedef enum {
VARIABLE_NULL=1,
SWITCH_NOT_MATCHED,
PARSE_ERROR,
FILE_ERROR,
ALLOC_FAILED
} error_t;
#endif
+1 -1
View File
@@ -81,7 +81,7 @@ extern int yydebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 47 "src/parser.bison"
#line 48 "src/parser.bison"
struct expr *expr;
struct oper *oper;
+3 -3
View File
@@ -39,8 +39,8 @@ struct pure_value {
struct value * value_create(addr_mode_t addr_m, index_t i_m, struct pure_value *value, struct ttk_register *i_reg);
struct value * value_create_direct_value(struct pure_value *p_v);
struct value * value_create_direct_indexed(struct pure_value *p_v, struct ttk_register *ttk_reg);
struct value * value_create_address_mode_indexed(char addr_mode, struct pure_value *p_v, struct ttk_register *ttk_reg);
struct value * value_create_address_mode(char addr_mode, struct pure_value *p_v);
struct value * value_create_address_mode_indexed(char* addr_mode, struct pure_value *p_v, struct ttk_register *ttk_reg);
struct value * value_create_address_mode(char* addr_mode, struct pure_value *p_v);
struct value * value_create_direct_register(struct ttk_register *ttk_reg);
@@ -49,7 +49,7 @@ struct pure_value * pure_value_create_value(int value);
struct pure_value * pure_value_create_label(struct label *l);
struct pure_value * pure_value_create(value_t kind, struct ttk_register *ttk_reg, int num, struct label *l);
addr_mode_t parse_addr_mode(char addr_mode);
addr_mode_t parse_addr_mode(char* addr_mode);
int value_print(struct value *v);