diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a2dfa56..ad8990e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,11 +16,11 @@ stages: build_clang++_d: image: warchantua/dev-essential stage: build_debug - script: clang++ -D_DEBUG -D_DONT_BREAK_ON_ERRORS src/main.cpp -gfull -gdwarf -o ./bin/slime_d --std=c++17 -I3rd/ + script: clang++ -D_DEBUG -D_DONT_BREAK_ON_ERRORS src/main.cpp -gfull -gdwarf -o ./bin/slime_d --std=c++17 -I3rd/ build_g++_d: stage: build_debug - script: g++ -D_DEBUG -D_DONT_BREAK_ON_ERRORS src/main.cpp -g -o ./bin/slime_d --std=c++17 -I3rd/ + script: g++ -D_DEBUG -D_DONT_BREAK_ON_ERRORS src/main.cpp -g -o ./bin/slime_d --std=c++17 -I3rd/ build_clang++_r: image: warchantua/dev-essential @@ -33,13 +33,13 @@ build_g++_r: tests_d: stage: test - script: ./bin/sime_d --run-tests + script: ./bin/slime_d --run-tests tests_r: stage: test - script: ./bin/sime --run-tests + script: ./bin/slime --run-tests valgrind: image: warchantua/dev-essential stage: test - script: valgrind ./bin/sime --run-tests + script: valgrind ./bin/slime --run-tests diff --git a/src/built_ins.cpp b/src/built_ins.cpp index 670a426..f010ff9 100644 --- a/src/built_ins.cpp +++ b/src/built_ins.cpp @@ -71,10 +71,10 @@ namespace Slime { proc built_in_load(String file_name) -> Lisp_Object* { profile_with_comment(file_name.data); char* file_content; - path_char fullpath[MAX_PATH]; + path_char fullpath[max_path_len]; #ifdef UNICODE path_char* temp = char_to_path_char(Memory::get_c_str(file_name)); - swprintf(fullpath, MAX_PATH,L"%s", temp); + swprintf(fullpath, max_path_len,L"%s", temp); file_content = read_entire_file(temp); free(temp); #else @@ -89,7 +89,7 @@ namespace Slime { #ifdef UNICODE fullpath[0] = L'\0'; path_char* temp = char_to_path_char(Memory::get_c_str(file_name)); - swprintf(fullpath, MAX_PATH, L"%s%s", it, temp); + swprintf(fullpath, max_path_leno, L"%s%s", it, temp); free(temp); #else fullpath[0] = '\0'; diff --git a/src/io.cpp b/src/io.cpp index 31ccd2b..d6729de 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -356,7 +356,7 @@ namespace Slime { if (abs(node->value.number - (s32)node->value.number) < 0.000001f) asprintf(&temp, "%d", (s32)node->value.number); else - asprintf(&temp, "%f", node->value.number); + asprintf(&temp, "%Lf", node->value.number); return temp; } case (Lisp_Object_Type::Keyword): { diff --git a/src/libslime.cpp b/src/libslime.cpp index bbabed4..4384a99 100644 --- a/src/libslime.cpp +++ b/src/libslime.cpp @@ -17,6 +17,7 @@ # include # include #else +# include # include # include #endif diff --git a/src/memory.cpp b/src/memory.cpp index 54a7b8e..daf4617 100644 --- a/src/memory.cpp +++ b/src/memory.cpp @@ -126,8 +126,12 @@ namespace Slime::Memory { free(value); } - // free the exe dir: - free(Globals::load_path.data[0]); + + // free paths in load path + for (u32 i = 0; i < Globals::load_path.next_index; ++i) { + free(Globals::load_path.data[i]); + } + Globals::load_path.dealloc(); Globals::user_types.dealloc(); Globals::docs.dealloc(); diff --git a/src/platform.cpp b/src/platform.cpp index 0252f40..f882d89 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -1,5 +1,12 @@ namespace Slime { +#ifdef SLIME_WINDOWS + constexpr u32 max_path_len = MAX_PATH; +#else + constexpr u32 max_path_len = PATH_MAX; +#endif + + inline proc get_cwd() -> char* { const u32 buf_size = 2048; char* res = (char*)malloc(buf_size * sizeof(char)); diff --git a/src/testing.cpp b/src/testing.cpp index a98868d..1265746 100644 --- a/src/testing.cpp +++ b/src/testing.cpp @@ -46,13 +46,13 @@ namespace Slime { } \ #define assert_equal_f64(variable, value) \ - if (fabs((f64)variable - (f64)value) > epsilon) { \ + if (fabsl((f64)variable - (f64)value) > epsilon) { \ print_assert_equal_fail(variable, value, f64, "%Lf"); \ return fail; \ } #define assert_not_equal_f64(variable, value) \ - if (fabs((f64)variable - (f64)value) <= epsilon) { \ + if (fabsl((f64)variable - (f64)value) <= epsilon) { \ print_assert_not_equal_fail(variable, value, f64, "L%f"); \ return fail; \ }