Use macro to generate tryDereference

This commit is contained in:
Lucas Schumacher 2024-07-11 16:20:55 -04:00
parent 324231b00f
commit 11e9135f06

26
mem.c
View File

@ -16,19 +16,21 @@ void segfault_handler(int signal_num) {
exit(signal_num);
}
}
int tryDereference(uint8_t* pointer, uint8_t* output) {
uintptr_t val;
if (setjmp(env_buffer) == 0) {
enable_handler = 1;
*output = *pointer;
enable_handler = 0;
return 1;
#define IMPL_TRY_DEREF(type) \
int tryDereference(type* pointer, type* output) { \
type val;\
if(setjmp(env_buffer) == 0) {\
enable_handler = 1;\
*output = *pointer;\
enable_handler = 0;\
return 1;\
} else {\
enable_handler = 0;\
return 0;\
}\
}
else {
enable_handler = 0;
return 0;
}
}
IMPL_TRY_DEREF(uint8_t)
void printMem(uint8_t* location) {
uint8_t value;
if(tryDereference(location, &value)) {