Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
void
_gum_duk_release_heapptr (duk_context * ctx,
                          GumDukHeapPtr heapptr)
{
  _gum_duk_unprotect (ctx, heapptr);
}