1 |
pacho 14/09/26 10:31:49 |
2 |
|
3 |
Added: gobject-introspection-1.40.0-gjs-crash.patch |
4 |
Log: |
5 |
Prevent gjs crashes, bug #523608 by Serge Gavrilov |
6 |
|
7 |
(Portage version: 2.2.12/cvs/Linux x86_64, signed Manifest commit with key A188FBD4) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 dev-libs/gobject-introspection/files/gobject-introspection-1.40.0-gjs-crash.patch |
11 |
|
12 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/gobject-introspection/files/gobject-introspection-1.40.0-gjs-crash.patch?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-libs/gobject-introspection/files/gobject-introspection-1.40.0-gjs-crash.patch?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: gobject-introspection-1.40.0-gjs-crash.patch |
16 |
=================================================================== |
17 |
From a4c9d09d7a89d3c80b4465a5c2ae0efa24158b24 Mon Sep 17 00:00:00 2001 |
18 |
From: Giovanni Campagna <gcampagna@×××××××××.org> |
19 |
Date: Tue, 6 May 2014 18:53:21 +0200 |
20 |
Subject: Parse and expose ownership transfer for instance parameters |
21 |
|
22 |
Knowing the ownership transfer for instance parameters is |
23 |
necessary for correct memory management of functions which |
24 |
"eat" their instance argument, such as g_dbus_method_invocation_return_*. |
25 |
Parse this information from the gir file and store in the |
26 |
typelib, and then provide new API on GICallableInfo to |
27 |
retrieve this. |
28 |
|
29 |
https://bugzilla.gnome.org/show_bug.cgi?id=729662 |
30 |
|
31 |
diff --git a/girepository/gicallableinfo.c b/girepository/gicallableinfo.c |
32 |
index e69e3e9..702e16c 100644 |
33 |
--- a/girepository/gicallableinfo.c |
34 |
+++ b/girepository/gicallableinfo.c |
35 |
@@ -276,6 +276,32 @@ g_callable_info_get_caller_owns (GICallableInfo *info) |
36 |
} |
37 |
|
38 |
/** |
39 |
+ * g_callable_info_get_instance_ownership_transfer: |
40 |
+ * @info: a #GICallableInfo |
41 |
+ * |
42 |
+ * Obtains the ownership transfer for the instance argument. |
43 |
+ * #GITransfer contains a list of possible transfer values. |
44 |
+ * |
45 |
+ * Returns: the transfer |
46 |
+ */ |
47 |
+GITransfer |
48 |
+g_callable_info_get_instance_ownership_transfer (GICallableInfo *info) |
49 |
+{ |
50 |
+ GIRealInfo *rinfo = (GIRealInfo*) info; |
51 |
+ SignatureBlob *blob; |
52 |
+ |
53 |
+ g_return_val_if_fail (info != NULL, -1); |
54 |
+ g_return_val_if_fail (GI_IS_CALLABLE_INFO (info), -1); |
55 |
+ |
56 |
+ blob = (SignatureBlob *)&rinfo->typelib->data[signature_offset (info)]; |
57 |
+ |
58 |
+ if (blob->instance_transfer_ownership) |
59 |
+ return GI_TRANSFER_EVERYTHING; |
60 |
+ else |
61 |
+ return GI_TRANSFER_NOTHING; |
62 |
+} |
63 |
+ |
64 |
+/** |
65 |
* g_callable_info_get_n_args: |
66 |
* @info: a #GICallableInfo |
67 |
* |
68 |
diff --git a/girepository/gicallableinfo.h b/girepository/gicallableinfo.h |
69 |
index 71f9d0c..f273d29 100644 |
70 |
--- a/girepository/gicallableinfo.h |
71 |
+++ b/girepository/gicallableinfo.h |
72 |
@@ -73,6 +73,8 @@ gboolean g_callable_info_invoke (GICallableInfo *info, |
73 |
gboolean is_method, |
74 |
gboolean throws, |
75 |
GError **error); |
76 |
+GITransfer g_callable_info_get_instance_ownership_transfer (GICallableInfo *info); |
77 |
+ |
78 |
G_END_DECLS |
79 |
|
80 |
|
81 |
diff --git a/girepository/girepository.symbols b/girepository/girepository.symbols |
82 |
index 5f01adf..48fb0d9 100644 |
83 |
--- a/girepository/girepository.symbols |
84 |
+++ b/girepository/girepository.symbols |
85 |
@@ -26,6 +26,7 @@ g_info_new |
86 |
g_callable_info_can_throw_gerror |
87 |
g_callable_info_get_arg |
88 |
g_callable_info_get_caller_owns |
89 |
+g_callable_info_get_instance_ownership_transfer |
90 |
g_callable_info_get_n_args |
91 |
g_callable_info_get_return_attribute |
92 |
g_callable_info_get_return_type |
93 |
diff --git a/girepository/girnode.c b/girepository/girnode.c |
94 |
index 53385c2..a7a77e3 100644 |
95 |
--- a/girepository/girnode.c |
96 |
+++ b/girepository/girnode.c |
97 |
@@ -1664,6 +1664,7 @@ _g_ir_node_build_typelib (GIrNode *node, |
98 |
blob2->caller_owns_return_value = function->result->transfer; |
99 |
blob2->caller_owns_return_container = function->result->shallow_transfer; |
100 |
blob2->skip_return = function->result->skip; |
101 |
+ blob2->instance_transfer_ownership = function->instance_transfer_full; |
102 |
blob2->reserved = 0; |
103 |
blob2->n_arguments = n; |
104 |
|
105 |
@@ -1762,6 +1763,7 @@ _g_ir_node_build_typelib (GIrNode *node, |
106 |
blob2->may_return_null = signal->result->nullable; |
107 |
blob2->caller_owns_return_value = signal->result->transfer; |
108 |
blob2->caller_owns_return_container = signal->result->shallow_transfer; |
109 |
+ blob2->instance_transfer_ownership = signal->instance_transfer_full; |
110 |
blob2->reserved = 0; |
111 |
blob2->n_arguments = n; |
112 |
|
113 |
@@ -1820,6 +1822,7 @@ _g_ir_node_build_typelib (GIrNode *node, |
114 |
blob2->may_return_null = vfunc->result->nullable; |
115 |
blob2->caller_owns_return_value = vfunc->result->transfer; |
116 |
blob2->caller_owns_return_container = vfunc->result->shallow_transfer; |
117 |
+ blob2->instance_transfer_ownership = vfunc->instance_transfer_full; |
118 |
blob2->reserved = 0; |
119 |
blob2->n_arguments = n; |
120 |
|
121 |
diff --git a/girepository/girnode.h b/girepository/girnode.h |
122 |
index 4beef7f..02196e7 100644 |
123 |
--- a/girepository/girnode.h |
124 |
+++ b/girepository/girnode.h |
125 |
@@ -100,6 +100,7 @@ struct _GIrNodeFunction |
126 |
gboolean is_constructor; |
127 |
gboolean wraps_vfunc; |
128 |
gboolean throws; |
129 |
+ gboolean instance_transfer_full; |
130 |
|
131 |
gchar *symbol; |
132 |
|
133 |
@@ -188,6 +189,7 @@ struct _GIrNodeSignal |
134 |
gboolean detailed; |
135 |
gboolean action; |
136 |
gboolean no_hooks; |
137 |
+ gboolean instance_transfer_full; |
138 |
|
139 |
gboolean has_class_closure; |
140 |
gboolean true_stops_emit; |
141 |
@@ -208,6 +210,7 @@ struct _GIrNodeVFunc |
142 |
gboolean must_not_be_implemented; |
143 |
gboolean is_class_closure; |
144 |
gboolean throws; |
145 |
+ gboolean instance_transfer_full; |
146 |
|
147 |
char *invoker; |
148 |
|
149 |
diff --git a/girepository/girparser.c b/girepository/girparser.c |
150 |
index 6c76866..f928c2e 100644 |
151 |
--- a/girepository/girparser.c |
152 |
+++ b/girepository/girparser.c |
153 |
@@ -1047,6 +1047,71 @@ parse_param_transfer (GIrNodeParam *param, const gchar *transfer, const gchar *n |
154 |
} |
155 |
|
156 |
static gboolean |
157 |
+start_instance_parameter (GMarkupParseContext *context, |
158 |
+ const gchar *element_name, |
159 |
+ const gchar **attribute_names, |
160 |
+ const gchar **attribute_values, |
161 |
+ ParseContext *ctx, |
162 |
+ GError **error) |
163 |
+{ |
164 |
+ const gchar *transfer; |
165 |
+ gboolean transfer_full; |
166 |
+ |
167 |
+ if (!(strcmp (element_name, "instance-parameter") == 0 && |
168 |
+ ctx->state == STATE_FUNCTION_PARAMETERS)) |
169 |
+ return FALSE; |
170 |
+ |
171 |
+ transfer = find_attribute ("transfer-ownership", attribute_names, attribute_values); |
172 |
+ |
173 |
+ state_switch (ctx, STATE_PASSTHROUGH); |
174 |
+ |
175 |
+ if (strcmp (transfer, "full") == 0) |
176 |
+ transfer_full = TRUE; |
177 |
+ else if (strcmp (transfer, "none") == 0) |
178 |
+ transfer_full = FALSE; |
179 |
+ else |
180 |
+ { |
181 |
+ g_set_error (error, G_MARKUP_ERROR, |
182 |
+ G_MARKUP_ERROR_INVALID_CONTENT, |
183 |
+ "invalid value for 'transfer-ownership' for instance parameter: %s", transfer); |
184 |
+ return FALSE; |
185 |
+ } |
186 |
+ |
187 |
+ switch (CURRENT_NODE (ctx)->type) |
188 |
+ { |
189 |
+ case G_IR_NODE_FUNCTION: |
190 |
+ case G_IR_NODE_CALLBACK: |
191 |
+ { |
192 |
+ GIrNodeFunction *func; |
193 |
+ |
194 |
+ func = (GIrNodeFunction *)CURRENT_NODE (ctx); |
195 |
+ func->instance_transfer_full = transfer_full; |
196 |
+ } |
197 |
+ break; |
198 |
+ case G_IR_NODE_SIGNAL: |
199 |
+ { |
200 |
+ GIrNodeSignal *signal; |
201 |
+ |
202 |
+ signal = (GIrNodeSignal *)CURRENT_NODE (ctx); |
203 |
+ signal->instance_transfer_full = transfer_full; |
204 |
+ } |
205 |
+ break; |
206 |
+ case G_IR_NODE_VFUNC: |
207 |
+ { |
208 |
+ GIrNodeVFunc *vfunc; |
209 |
+ |
210 |
+ vfunc = (GIrNodeVFunc *)CURRENT_NODE (ctx); |
211 |
+ vfunc->instance_transfer_full = transfer_full; |
212 |
+ } |
213 |
+ break; |
214 |
+ default: |
215 |
+ g_assert_not_reached (); |
216 |
+ } |
217 |
+ |
218 |
+ return TRUE; |
219 |
+} |
220 |
+ |
221 |
+static gboolean |
222 |
start_parameter (GMarkupParseContext *context, |
223 |
const gchar *element_name, |
224 |
const gchar **attribute_names, |
225 |
@@ -2848,11 +2913,10 @@ start_element_handler (GMarkupParseContext *context, |
226 |
attribute_names, attribute_values, |
227 |
ctx, error)) |
228 |
goto out; |
229 |
- else if (strcmp (element_name, "instance-parameter") == 0) |
230 |
- { |
231 |
- state_switch (ctx, STATE_PASSTHROUGH); |
232 |
- goto out; |
233 |
- } |
234 |
+ else if (start_instance_parameter (context, element_name, |
235 |
+ attribute_names, attribute_values, |
236 |
+ ctx, error)) |
237 |
+ goto out; |
238 |
else if (strcmp (element_name, "c:include") == 0) |
239 |
{ |
240 |
state_switch (ctx, STATE_C_INCLUDE); |
241 |
diff --git a/girepository/gitypelib-internal.h b/girepository/gitypelib-internal.h |
242 |
index 93d621b..5ccb617 100644 |
243 |
--- a/girepository/gitypelib-internal.h |
244 |
+++ b/girepository/gitypelib-internal.h |
245 |
@@ -465,6 +465,8 @@ typedef struct { |
246 |
* freeing the container, but not its contents. |
247 |
* @skip_return: Indicates that the return value is only useful in C and should |
248 |
* be skipped. |
249 |
+ * @instance_transfer_ownership: When calling, the function assumes ownership of |
250 |
+ * the instance parameter. |
251 |
* @reserved: Reserved for future use. |
252 |
* @n_arguments: The number of arguments that this function expects, also the |
253 |
* length of the array of ArgBlobs. |
254 |
@@ -479,7 +481,8 @@ typedef struct { |
255 |
guint16 caller_owns_return_value : 1; |
256 |
guint16 caller_owns_return_container : 1; |
257 |
guint16 skip_return : 1; |
258 |
- guint16 reserved :12; |
259 |
+ guint16 instance_transfer_ownership : 1; |
260 |
+ guint16 reserved :11; |
261 |
|
262 |
guint16 n_arguments; |
263 |
|
264 |
diff --git a/tests/repository/gitypelibtest.c b/tests/repository/gitypelibtest.c |
265 |
index 565c95c..7b9cb35 100644 |
266 |
--- a/tests/repository/gitypelibtest.c |
267 |
+++ b/tests/repository/gitypelibtest.c |
268 |
@@ -276,6 +276,34 @@ test_signal_array_len (GIRepository * repo) |
269 |
g_base_info_unref (testobj_info); |
270 |
} |
271 |
|
272 |
+static void |
273 |
+test_instance_transfer_ownership (GIRepository * repo) |
274 |
+{ |
275 |
+ GIObjectInfo *testobj_info; |
276 |
+ GIFunctionInfo *func_info; |
277 |
+ GITransfer transfer; |
278 |
+ |
279 |
+ g_assert (g_irepository_require (repo, "Regress", NULL, 0, NULL)); |
280 |
+ testobj_info = g_irepository_find_by_name (repo, "Regress", "TestObj"); |
281 |
+ g_assert (testobj_info != NULL); |
282 |
+ |
283 |
+ func_info = g_object_info_find_method (testobj_info, "instance_method"); |
284 |
+ g_assert (func_info != NULL); |
285 |
+ transfer = g_callable_info_get_instance_ownership_transfer ((GICallableInfo*) func_info); |
286 |
+ g_assert_cmpint (GI_TRANSFER_NOTHING, ==, transfer); |
287 |
+ |
288 |
+ g_base_info_unref (func_info); |
289 |
+ |
290 |
+ func_info = g_object_info_find_method (testobj_info, "instance_method_full"); |
291 |
+ g_assert (func_info != NULL); |
292 |
+ transfer = g_callable_info_get_instance_ownership_transfer ((GICallableInfo*) func_info); |
293 |
+ g_assert_cmpint (GI_TRANSFER_EVERYTHING, ==, transfer); |
294 |
+ |
295 |
+ g_base_info_unref (func_info); |
296 |
+ |
297 |
+ g_base_info_unref (testobj_info); |
298 |
+} |
299 |
+ |
300 |
int |
301 |
main (int argc, char **argv) |
302 |
{ |
303 |
@@ -292,6 +320,7 @@ main (int argc, char **argv) |
304 |
test_hash_with_cairo_typelib (repo); |
305 |
test_char_types (repo); |
306 |
test_signal_array_len (repo); |
307 |
+ test_instance_transfer_ownership (repo); |
308 |
|
309 |
exit (0); |
310 |
} |
311 |
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_full.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_full.page |
312 |
new file mode 100644 |
313 |
index 0000000..2222bec |
314 |
--- /dev/null |
315 |
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_full.page |
316 |
@@ -0,0 +1,38 @@ |
317 |
+<?xml version="1.0"?> |
318 |
+<page id="Regress.TestObj.instance_method_full" |
319 |
+ type="topic" |
320 |
+ style="method" |
321 |
+ xmlns="http://projectmallard.org/1.0/" |
322 |
+ xmlns:api="http://projectmallard.org/experimental/api/" |
323 |
+ xmlns:ui="http://projectmallard.org/1.0/ui/"> |
324 |
+ <info> |
325 |
+ <link xref="Regress.TestObj" group="method" type="guide"/> |
326 |
+ <api:function> |
327 |
+ <api:returns> |
328 |
+ <api:type>void</api:type> |
329 |
+ </api:returns> |
330 |
+ <api:name>regress_test_obj_instance_method_full</api:name> |
331 |
+ <api:arg> |
332 |
+ <api:type>RegressTestObj*</api:type> |
333 |
+ <api:name>obj</api:name> |
334 |
+ </api:arg> |
335 |
+ </api:function> |
336 |
+ </info> |
337 |
+ <title>regress_test_obj_instance_method_full</title> |
338 |
+ <synopsis><code mime="text/x-csrc"> |
339 |
+void regress_test_obj_instance_method_full (RegressTestObj* obj); |
340 |
+ </code></synopsis> |
341 |
+ |
342 |
+ |
343 |
+<terms> |
344 |
+<item> |
345 |
+<title><code>obj</code></title> |
346 |
+ |
347 |
+</item> |
348 |
+<item> |
349 |
+<title><code>Returns</code></title> |
350 |
+ |
351 |
+</item> |
352 |
+</terms> |
353 |
+ |
354 |
+</page> |
355 |
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_full.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_full.page |
356 |
new file mode 100644 |
357 |
index 0000000..5b7e1c9 |
358 |
--- /dev/null |
359 |
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_full.page |
360 |
@@ -0,0 +1,26 @@ |
361 |
+<?xml version="1.0"?> |
362 |
+<page id="Regress.TestObj.instance_method_full" |
363 |
+ type="topic" |
364 |
+ style="method" |
365 |
+ xmlns="http://projectmallard.org/1.0/" |
366 |
+ xmlns:api="http://projectmallard.org/experimental/api/" |
367 |
+ xmlns:ui="http://projectmallard.org/1.0/ui/"> |
368 |
+ <info> |
369 |
+ <link xref="Regress.TestObj" group="method" type="guide"/> |
370 |
+ <api:function> |
371 |
+ <api:returns> |
372 |
+ <api:type>void</api:type> |
373 |
+ </api:returns> |
374 |
+ <api:name>regress_test_obj_instance_method_full</api:name> |
375 |
+ </api:function> |
376 |
+ </info> |
377 |
+ <title>Regress.TestObj.prototype.instance_method_full</title> |
378 |
+ <synopsis><code mime="text/x-gjs"> |
379 |
+function instance_method_full(): void { |
380 |
+ // Gjs wrapper for regress_test_obj_instance_method_full() |
381 |
+} |
382 |
+ </code></synopsis> |
383 |
+ |
384 |
+ |
385 |
+ |
386 |
+</page> |
387 |
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_full.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_full.page |
388 |
new file mode 100644 |
389 |
index 0000000..2b5c1dc |
390 |
--- /dev/null |
391 |
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_full.page |
392 |
@@ -0,0 +1,37 @@ |
393 |
+<?xml version="1.0"?> |
394 |
+<page id="Regress.TestObj.instance_method_full" |
395 |
+ type="topic" |
396 |
+ style="method" |
397 |
+ xmlns="http://projectmallard.org/1.0/" |
398 |
+ xmlns:api="http://projectmallard.org/experimental/api/" |
399 |
+ xmlns:ui="http://projectmallard.org/1.0/ui/"> |
400 |
+ <info> |
401 |
+ <link xref="Regress.TestObj" group="method" type="guide"/> |
402 |
+ <api:function> |
403 |
+ <api:returns> |
404 |
+ <api:type>none</api:type> |
405 |
+ </api:returns> |
406 |
+ <api:name>regress_test_obj_instance_method_full</api:name> |
407 |
+ <api:arg> |
408 |
+ <api:type>Regress.TestObj</api:type> |
409 |
+ <api:name>self</api:name> |
410 |
+ </api:arg> |
411 |
+ </api:function> |
412 |
+ </info> |
413 |
+ <title>Regress.TestObj.instance_method_full</title> |
414 |
+ <synopsis><code mime="text/x-python"> |
415 |
+@accepts(Regress.TestObj) |
416 |
+@returns(none) |
417 |
+def instance_method_full(self): |
418 |
+ # Python wrapper for regress_test_obj_instance_method_full() |
419 |
+ </code></synopsis> |
420 |
+ |
421 |
+ |
422 |
+<terms> |
423 |
+<item> |
424 |
+<title><code>self</code></title> |
425 |
+ |
426 |
+</item> |
427 |
+</terms> |
428 |
+ |
429 |
+</page> |
430 |
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir |
431 |
index 1c9c300..89ecaa4 100644 |
432 |
--- a/tests/scanner/Regress-1.0-expected.gir |
433 |
+++ b/tests/scanner/Regress-1.0-expected.gir |
434 |
@@ -3057,6 +3057,17 @@ case.</doc> |
435 |
</parameter> |
436 |
</parameters> |
437 |
</method> |
438 |
+ <method name="instance_method_full" |
439 |
+ c:identifier="regress_test_obj_instance_method_full"> |
440 |
+ <return-value transfer-ownership="none"> |
441 |
+ <type name="none" c:type="void"/> |
442 |
+ </return-value> |
443 |
+ <parameters> |
444 |
+ <instance-parameter name="obj" transfer-ownership="full"> |
445 |
+ <type name="TestObj" c:type="RegressTestObj*"/> |
446 |
+ </instance-parameter> |
447 |
+ </parameters> |
448 |
+ </method> |
449 |
<method name="set_bare" c:identifier="regress_test_obj_set_bare"> |
450 |
<return-value transfer-ownership="none"> |
451 |
<type name="none" c:type="void"/> |
452 |
diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt |
453 |
index c9ff60a..187aa16 100644 |
454 |
--- a/tests/scanner/Regress-1.0-sections-expected.txt |
455 |
+++ b/tests/scanner/Regress-1.0-sections-expected.txt |
456 |
@@ -334,6 +334,7 @@ regress_test_obj_emit_sig_with_uint64 |
457 |
regress_forced_method |
458 |
regress_test_obj_instance_method |
459 |
regress_test_obj_instance_method_callback |
460 |
+regress_test_obj_instance_method_full |
461 |
regress_test_obj_set_bare |
462 |
regress_test_obj_skip_inout_param |
463 |
regress_test_obj_skip_out_param |
464 |
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c |
465 |
index 1bad36e..b42e0cd 100644 |
466 |
--- a/tests/scanner/regress.c |
467 |
+++ b/tests/scanner/regress.c |
468 |
@@ -2679,6 +2679,17 @@ regress_test_obj_instance_method (RegressTestObj *obj) |
469 |
return -1; |
470 |
} |
471 |
|
472 |
+/** |
473 |
+ * regress_test_obj_instance_method_full: |
474 |
+ * @obj: (transfer full): |
475 |
+ * |
476 |
+ */ |
477 |
+void |
478 |
+regress_test_obj_instance_method_full (RegressTestObj *obj) |
479 |
+{ |
480 |
+ g_object_unref (obj); |
481 |
+} |
482 |
+ |
483 |
double |
484 |
regress_test_obj_static_method (int x) |
485 |
{ |
486 |
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h |
487 |
index e2e645b..667f129 100644 |
488 |
--- a/tests/scanner/regress.h |
489 |
+++ b/tests/scanner/regress.h |
490 |
@@ -527,6 +527,7 @@ void regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj); |
491 |
void regress_test_obj_emit_sig_with_int64 (RegressTestObj *obj); |
492 |
void regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj); |
493 |
int regress_test_obj_instance_method (RegressTestObj *obj); |
494 |
+void regress_test_obj_instance_method_full (RegressTestObj *obj); |
495 |
double regress_test_obj_static_method (int x); |
496 |
void regress_forced_method (RegressTestObj *obj); |
497 |
|
498 |
-- |
499 |
cgit v0.10.1 |