#include "err.h" void err_init(err_t* err) { assert(err); err->size = 0; } void err_free(err_t* err) { assert(err); for (size_t i=0; isize; i++) { free(err->errors[i]->what); free(err->errors[i]); } err->size = 0; } void err_error(err_t* err, char* what, int line) { assert(err); assert(err->size + 1 < RZ_ERROR_STACK_SIZE); err->errors[err->size] = malloc(sizeof(err_msg_t)); err->errors[err->size]->what = strdup(what); err->errors[err->size]->line = line; err->size++; } void err_abort(err_t* err) { assert(err); for (size_t i=0; isize; i++) { fprintf(stderr, "ERR(%d) %s\n", err->errors[i]->line, err->errors[i]->what); } err_free(err); abort(); }