fixed error message generation
This commit is contained in:
12
src/errors.c
12
src/errors.c
@@ -3,11 +3,12 @@
|
||||
|
||||
#define ERRMSG_LENGTH 1024
|
||||
|
||||
Error* Error_create(const char* msg, bool is_msg_on_heap, ErrorCallPos){
|
||||
Error* Error_create(const char* msg, bool is_msg_on_heap, ErrorCallPos p){
|
||||
Error* e = (Error*)malloc(sizeof(Error));
|
||||
e->msg = str_construct((char*)(void*)msg, strlen(msg), true);
|
||||
e->is_msg_on_heap = is_msg_on_heap;
|
||||
e->call_stack = List_alloc(ErrorCallPos, 1);
|
||||
e->call_stack = List_alloc(ErrorCallPos, 16);
|
||||
List_push(&e->call_stack, ErrorCallPos, p);
|
||||
return e;
|
||||
}
|
||||
|
||||
@@ -30,12 +31,12 @@ str Error_toStr(Error* e){
|
||||
for(u32 i = 0; i < len; i++){
|
||||
ErrorCallPos* ep = (ErrorCallPos*)e->call_stack.data + i;
|
||||
StringBuilder_append_str(&b, STR("\n at "));
|
||||
StringBuilder_append_str(&b, ep->file);
|
||||
StringBuilder_append_cstr(&b, ep->file);
|
||||
StringBuilder_append_char(&b, ':');
|
||||
StringBuilder_append_i64(&b, ep->line);
|
||||
StringBuilder_append_char(&b, ' ');
|
||||
StringBuilder_append_str(&b, ep->func);
|
||||
StringBuilder_append_str(&b, STR("()\n"));
|
||||
StringBuilder_append_cstr(&b, ep->func);
|
||||
StringBuilder_append_str(&b, STR("()"));
|
||||
}
|
||||
|
||||
return StringBuilder_getStr(&b);
|
||||
@@ -43,7 +44,6 @@ str Error_toStr(Error* e){
|
||||
|
||||
|
||||
void Error_printAndExit(Error* e){
|
||||
Error_addCallPos(e, ErrorCallPos_here());\
|
||||
str e_str = Error_toStr(e);
|
||||
printfe("%s\n", e_str.data);
|
||||
free(e_str.data);
|
||||
|
||||
@@ -33,8 +33,8 @@ void StringBuilder_append_str(StringBuilder* b, str s){
|
||||
List_push_size(&b->buffer, s.data, s.size);
|
||||
}
|
||||
|
||||
void StringBuilder_append_cstr(StringBuilder* b, char* s){
|
||||
StringBuilder_append_str(b, str_construct(s, strlen(s), true));
|
||||
void StringBuilder_append_cstr(StringBuilder* b, cstr s){
|
||||
StringBuilder_append_str(b, str_construct((char*)(void*)s, strlen(s), true));
|
||||
}
|
||||
|
||||
void StringBuilder_append_i64(StringBuilder* b, i64 n){
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
nsec_t getTimeNsec(){
|
||||
struct timespec t;
|
||||
assert(clock_gettime(CLOCK_REALTIME, &t) != 0);
|
||||
assert(clock_gettime(CLOCK_REALTIME, &t) == 0);
|
||||
u64 n = t.tv_sec * G + t.tv_nsec;
|
||||
return n;
|
||||
}
|
||||
|
||||
usec_t getTimeUsec(){
|
||||
struct timespec t;
|
||||
assert(clock_gettime(CLOCK_REALTIME, &t) != 0);
|
||||
assert(clock_gettime(CLOCK_REALTIME, &t) == 0);
|
||||
u64 n = t.tv_sec * M + t.tv_nsec / K;
|
||||
return n;
|
||||
}
|
||||
@@ -34,7 +34,7 @@ void sleepNsec(nsec_t time){
|
||||
.tv_sec = time / G,
|
||||
.tv_nsec = time % G
|
||||
};
|
||||
assert(nanosleep(&t, NULL) != 0);
|
||||
assert(nanosleep(&t, NULL) == 0);
|
||||
}
|
||||
|
||||
void sleepUsec(usec_t time){
|
||||
|
||||
Reference in New Issue
Block a user