diff --git a/source/runtime.cpp b/source/runtime.cpp index acdf322..4bf31d7 100644 --- a/source/runtime.cpp +++ b/source/runtime.cpp @@ -16,10 +16,11 @@ extern "C" int main(int argc, char const * const * argv) { bool is_config_loaded{false}; system.res_fs().read_file(config_path, [&](coral::readable const & file) { - kym::vm vm{&system.thread_safe_allocator(), - [&system](coral::slice const & error_message) { - system.log(app::log_level::error, error_message); - }}; + coral::allocator * const allocator{&system.thread_safe_allocator()}; + + kym::vm vm{allocator, [&system](coral::slice const & error_message) { + system.log(app::log_level::error, error_message); + }}; if (!vm.init({.datastack_size = 64, .callstack_size = 64})) { system.log(app::log_level::error, "failed to allocate memory for config vm"); @@ -27,7 +28,7 @@ extern "C" int main(int argc, char const * const * argv) { return; } - coral::stack script_source{&system.thread_safe_allocator()}; + coral::stack script_source{allocator}; coral::u8 stream_buffer[1024]{0}; if (!coral::stream(coral::sequence_writer{&script_source}, file, stream_buffer).is_ok()) @@ -51,7 +52,7 @@ extern "C" int main(int argc, char const * const * argv) { vm.with_object(config.get_field("title"), [&](kym::bound_object & title) { coral::stack title_buffer{&system.thread_safe_allocator()}; - if (!title.stringify(coral::sequence_writer(&title_buffer)).is_ok()) { + if (!title.stringify(coral::sequence_writer{&title_buffer}).is_ok()) { system.log(app::log_level::error, "failed to decode `title` property of config"); @@ -64,7 +65,21 @@ extern "C" int main(int argc, char const * const * argv) { }); }); - if (!is_config_loaded) return coral::u8_max; + if (!is_config_loaded) { + coral::stack error_message{&system.thread_safe_allocator()}; + + { + coral::sequence_writer error_writer{&error_message}; + + if (!error_writer(coral::slice{"failed to load "}.as_bytes()).is_ok()) + return coral::u8_max; + + if (!error_writer(config_path.as_slice().as_bytes()).is_ok()) + return coral::u8_max; + } + + return coral::u8_max; + } // app::canvas canvas_2d();