static void gum_duk_replace_entry_free (GumDukReplaceEntry * entry) { GumDukCore * core = entry->core; gum_interceptor_revert_function (entry->interceptor, entry->target); _gum_duk_unprotect (core->ctx, entry->replacement); g_slice_free (GumDukReplaceEntry, entry); }
static void gum_kernel_scan_context_free (GumKernelScanContext * self) { GumDukCore * core = self->core; GumDukScope scope; duk_context * ctx; ctx = _gum_duk_scope_enter (&scope, core); _gum_duk_unprotect (ctx, self->on_match); if (self->on_error != NULL) _gum_duk_unprotect (ctx, self->on_error); _gum_duk_unprotect (ctx, self->on_complete); _gum_duk_core_unpin (core); _gum_duk_scope_leave (&scope); gum_match_pattern_free (self->pattern); g_slice_free (GumKernelScanContext, self); }
static void gum_duk_exception_handler_free (GumDukExceptionHandler * handler) { GumDukCore * core = handler->core; GumDukScope scope = GUM_DUK_SCOPE_INIT (core); gum_exceptor_remove (core->exceptor, gum_duk_exception_handler_on_exception, handler); _gum_duk_unprotect (scope.ctx, handler->callback); g_slice_free (GumDukExceptionHandler, handler); }
void _gum_duk_release_heapptr (duk_context * ctx, GumDukHeapPtr heapptr) { _gum_duk_unprotect (ctx, heapptr); }