mirror of
https://github.com/mkxp-z/mkxp-z.git
synced 2025-08-28 17:53:03 +02:00
Small fixes to the sandbox bindings
This commit is contained in:
parent
fe5a94aea7
commit
d7d460d6b0
2 changed files with 18 additions and 3 deletions
|
@ -52,6 +52,7 @@ namespace mkxp_sandbox {
|
|||
|
||||
ID id;
|
||||
VALUE backtrace;
|
||||
VALUE separator;
|
||||
wasm_ptr_t backtrace_str;
|
||||
|
||||
void operator()(VALUE exception) {
|
||||
|
@ -60,8 +61,8 @@ namespace mkxp_sandbox {
|
|||
SANDBOX_AWAIT_AND_SET(id, mkxp_sandbox::rb_intern, "backtrace");
|
||||
SANDBOX_AWAIT_AND_SET(backtrace, mkxp_sandbox::rb_funcall, exception, id, 0);
|
||||
SANDBOX_AWAIT_AND_SET(id, mkxp_sandbox::rb_intern, "join");
|
||||
SANDBOX_AWAIT_AND_SET(backtrace_str, mkxp_sandbox::rb_str_new_cstr, "\n\t");
|
||||
SANDBOX_AWAIT_AND_SET(backtrace, mkxp_sandbox::rb_funcall, backtrace, id, 1, backtrace_str);
|
||||
SANDBOX_AWAIT_AND_SET(separator, mkxp_sandbox::rb_str_new_cstr, "\n\t");
|
||||
SANDBOX_AWAIT_AND_SET(backtrace, mkxp_sandbox::rb_funcall, backtrace, id, 1, separator);
|
||||
SANDBOX_AWAIT_AND_SET(backtrace_str, mkxp_sandbox::rb_string_value_cstr, &backtrace);
|
||||
mkxp_retro::log_printf(RETRO_LOG_ERROR, "%s\n", *mkxp_sandbox::sandbox->bindings + backtrace_str);
|
||||
}
|
||||
|
@ -205,7 +206,7 @@ namespace mkxp_sandbox {
|
|||
}
|
||||
|
||||
if (zlib_result != Z_OK) {
|
||||
mkxp_retro::log_printf(RETRO_LOG_ERROR, "Error decoding script %zu: '%s'\n", i, (const char *)(*mkxp_sandbox::sandbox->bindings + script_name));
|
||||
mkxp_retro::log_printf(RETRO_LOG_ERROR, "Error decoding script %zu: '%s'\n", i, *mkxp_sandbox::sandbox->bindings + script_name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -221,6 +222,13 @@ namespace mkxp_sandbox {
|
|||
|
||||
while (true) {
|
||||
for (i = 0; i < script_count; ++i) {
|
||||
// Skip this script object if it's not an array
|
||||
SANDBOX_AWAIT_AND_SET(script, mkxp_sandbox::rb_ary_entry, scripts, i);
|
||||
SANDBOX_AWAIT_AND_SET(value, mkxp_sandbox::rb_obj_is_kind_of, script, mkxp_sandbox::sandbox->bindings.rb_cArray());
|
||||
if (value != SANDBOX_TRUE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
SANDBOX_AWAIT_AND_SET(script_filename_value, mkxp_sandbox::rb_ary_entry, script, 1);
|
||||
SANDBOX_AWAIT_AND_SET(script_string_value, mkxp_sandbox::rb_ary_entry, script, 3);
|
||||
SANDBOX_AWAIT_AND_SET(value, mkxp_sandbox::eval_script, script_string_value, script_filename_value);
|
||||
|
|
|
@ -82,6 +82,13 @@ ARG_HANDLERS = {
|
|||
formatter: lambda { |name| "VALUE (*#{name})(void *, ANYARGS)" },
|
||||
declaration: 'VALUE (*)(void *, ANYARGS)',
|
||||
},
|
||||
'rb_alloc_func_t' => {
|
||||
keep: true,
|
||||
func_ptr_args: [:size],
|
||||
func_ptr_rets: [:size],
|
||||
formatter: lambda { |name| "VALUE (*#{name})(void *, VALUE)" },
|
||||
declaration: 'VALUE (*)(void *, VALUE)',
|
||||
},
|
||||
'VALUE (*)(VALUE)' => {
|
||||
keep: true,
|
||||
func_ptr_args: [:size],
|
||||
|
|
Loading…
Add table
Reference in a new issue