fixed error message generation

This commit is contained in:
2025-07-22 15:13:10 +05:00
parent d3a8c03fe5
commit 447c15bc46
5 changed files with 18 additions and 17 deletions

View File

@@ -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);

View File

@@ -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){

View File

@@ -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){