summaryrefslogtreecommitdiff
blob: 74d325bf7c20d7cf413b5d4c6c48886f252c26a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
https://bugs.gentoo.org/880955

Based on https://github.com/spk121/guile-gi/commit/94144d0beffa96bf62c03bc71b498b94dafacc46

--- a/src/gig_callback.c
+++ b/src/gig_callback.c
@@ -296,6 +296,12 @@ callback_binding_inner(struct callback_binding_args *args)
     return (void *)1;
 }
 
+inline static void *
+callback_binding_inner_v(void *args)
+{
+    return callback_binding_inner(args);
+}
+
 void
 callback_binding(ffi_cif *cif, gpointer ret, gpointer *ffi_args, gpointer user_data)
 {
@@ -314,7 +320,7 @@ callback_binding(ffi_cif *cif, gpointer ret, gpointer *ffi_args, gpointer user_d
     if (scm_is_true(scm_fluid_ref(gig_callback_thread_fluid)))
         callback_binding_inner(&args);
     else {
-        if (NULL == scm_with_guile(callback_binding_inner, &args))
+        if (NULL == scm_with_guile(callback_binding_inner_v, &args))
             scm_c_eval_string("(quit EXIT_FAILURE)");
     }
 }
@@ -365,6 +371,12 @@ c_callback_binding_inner(struct callback_binding_args *args)
     return (void *)1;
 }
 
+inline static void *
+c_callback_binding_inner_v(void *args)
+{
+    return c_callback_binding_inner(args);
+}
+
 void
 c_callback_binding(ffi_cif *cif, gpointer ret, gpointer *ffi_args, gpointer user_data)
 {
@@ -383,7 +395,7 @@ c_callback_binding(ffi_cif *cif, gpointer ret, gpointer *ffi_args, gpointer user
     if (scm_is_true(scm_fluid_ref(gig_callback_thread_fluid)))
         c_callback_binding_inner(&args);
     else {
-        if (NULL == scm_with_guile(c_callback_binding_inner, &args))
+        if (NULL == scm_with_guile(c_callback_binding_inner_v, &args))
             scm_c_eval_string("(quit EXIT_FAILURE)");
     }
 }
@@ -692,10 +704,16 @@ callback_free(GigCallback *gcb)
     g_free(gcb);
 }
 
+inline static void
+callback_free_v(void *gcb)
+{
+    callback_free(gcb);
+}
+
 static void
 gig_fini_callback(void)
 {
     g_debug("Freeing callbacks");
-    g_slist_free_full(callback_list, (GDestroyNotify)callback_free);
+    g_slist_free_full(callback_list, (GDestroyNotify)callback_free_v);
     callback_list = NULL;
 }
--- a/src/gig_type_private.c
+++ b/src/gig_type_private.c
@@ -59,8 +59,14 @@ _boxed_funcs_free(GigBoxedFuncs *funcs)
     g_free(funcs);
 }
 
+inline static void
+_boxed_funcs_free_v(void *funcs)
+{
+    _boxed_funcs_free(funcs);
+}
+
 void
 _free_boxed_funcs()
 {
-    g_slist_free_full(_boxed_funcs, (GDestroyNotify)_boxed_funcs_free);
+    g_slist_free_full(_boxed_funcs, (GDestroyNotify)_boxed_funcs_free_v);
 }
-- 
2.46.0