frida 17.2.10 → 17.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frida",
3
- "version": "17.2.10",
3
+ "version": "17.2.11",
4
4
  "authors": [
5
5
  "Frida Developers"
6
6
  ],
@@ -1856,10 +1856,15 @@ fdn_keep_alive_on_destroy_signal_handler_detached (gpointer data,
1856
1856
  static void
1857
1857
  fdn_keep_alive_schedule_cleanup (FdnKeepAliveContext * context)
1858
1858
  {
1859
+ napi_threadsafe_function tsfn;
1860
+
1859
1861
  if (fdn_in_cleanup)
1860
1862
  return;
1861
1863
 
1862
- napi_call_threadsafe_function (context->tsfn, NULL, napi_tsfn_blocking);
1864
+ if ((tsfn = g_atomic_pointer_exchange (&context->tsfn, NULL)) != NULL)
1865
+ napi_call_threadsafe_function (tsfn, tsfn, napi_tsfn_blocking);
1866
+ else
1867
+ fdn_keep_alive_context_unref (context);
1863
1868
  }
1864
1869
 
1865
1870
  static void
@@ -1869,19 +1874,22 @@ fdn_keep_alive_on_tsfn_invoke (napi_env env,
1869
1874
  void * data)
1870
1875
  {
1871
1876
  FdnKeepAliveContext * ctx = context;
1877
+ napi_threadsafe_function tsfn = data;
1872
1878
 
1873
- if (ctx->signal_handler_id != 0)
1874
- {
1875
- g_signal_handler_disconnect (ctx->handle, ctx->signal_handler_id);
1876
- ctx->signal_handler_id = 0;
1879
+ g_signal_handler_disconnect (ctx->handle, ctx->signal_handler_id);
1880
+ ctx->signal_handler_id = 0;
1877
1881
 
1878
- g_object_unref (ctx->handle);
1879
- ctx->handle = NULL;
1882
+ g_object_unref (ctx->handle);
1883
+ ctx->handle = NULL;
1880
1884
 
1881
- napi_release_threadsafe_function (ctx->tsfn, napi_tsfn_abort);
1882
- ctx->tsfn = NULL;
1883
- }
1885
+ napi_release_threadsafe_function (tsfn, napi_tsfn_abort);
1884
1886
 
1887
+ fdn_keep_alive_context_unref (ctx);
1888
+ }
1889
+
1890
+ static void
1891
+ fdn_keep_alive_context_unref (FdnKeepAliveContext * ctx)
1892
+ {
1885
1893
  if (g_atomic_int_dec_and_test (&ctx->ref_count))
1886
1894
  g_slice_free (FdnKeepAliveContext, ctx);
1887
1895
  }
@@ -69,6 +69,7 @@ static void fdn_keep_alive_on_destroy_signal (GObject * handle, gpointer user_da
69
69
  static void fdn_keep_alive_on_destroy_signal_handler_detached (gpointer data, GClosure * closure);
70
70
  static void fdn_keep_alive_schedule_cleanup (FdnKeepAliveContext * context);
71
71
  static void fdn_keep_alive_on_tsfn_invoke (napi_env env, napi_value js_cb, void * context, void * data);
72
+ static void fdn_keep_alive_context_unref (FdnKeepAliveContext * ctx);
72
73
 
73
74
  static void fdn_inherit_val_val (napi_env env, napi_value sub_ctor, napi_value super_ctor, napi_value object_ctor, napi_value set_proto);
74
75
  G_GNUC_UNUSED static void fdn_inherit_val_ref (napi_env env, napi_value sub_ctor, napi_ref super_ctor, napi_value object_ctor, napi_value set_proto);
@@ -1,6 +1,6 @@
1
1
  [wrap-git]
2
2
  url = https://github.com/frida/frida-core.git
3
- revision = 17.2.10
3
+ revision = 17.2.11
4
4
  depth = 1
5
5
 
6
6
  [provide]