diff options
Diffstat (limited to 'core/libdeno')
-rw-r--r-- | core/libdeno/api.cc | 6 | ||||
-rw-r--r-- | core/libdeno/deno.h | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/core/libdeno/api.cc b/core/libdeno/api.cc index 1ded39e1b..08e8a6de9 100644 --- a/core/libdeno/api.cc +++ b/core/libdeno/api.cc @@ -138,6 +138,12 @@ const char* deno_last_exception(Deno* d_) { } } +void deno_clear_last_exception(Deno* d_) { + auto* d = deno::unwrap(d_); + d->last_exception_.clear(); + d->last_exception_handle_.Reset(); +} + void deno_execute(Deno* d_, void* user_data, const char* js_filename, const char* js_source) { auto* d = deno::unwrap(d_); diff --git a/core/libdeno/deno.h b/core/libdeno/deno.h index 946978e3b..fd48abc5a 100644 --- a/core/libdeno/deno.h +++ b/core/libdeno/deno.h @@ -117,8 +117,14 @@ void deno_pinned_buf_delete(deno_pinned_buf* buf); void deno_check_promise_errors(Deno* d); +// Returns a cstring pointer to the exception. +// Rust side must NOT assert ownership. const char* deno_last_exception(Deno* d); +// Clears last exception. +// Rust side must NOT hold pointer to exception string when called. +void deno_clear_last_exception(Deno* d_); + void deno_terminate_execution(Deno* d); void deno_run_microtasks(Deno* d, void* user_data); |