gobject-introspection 3.4.6 → 3.4.7
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.
- checksums.yaml +4 -4
- data/ext/gobject-introspection/rb-gi-arguments.c +44 -16
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8155698d93f3dd547669c6f99f8c190d43a28e78f8ae343a0b397afaec2039e0
|
4
|
+
data.tar.gz: 9b0a49644e299b1c3cd484bd5e005e85e19aa7a872fd2caf4b7048fe6f78f50e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30ebf17fa41a3040f6c7e8d6e754d755c62862be2a84ceb7d3c88aeeaaeef562ab375087bb0c52a0b61e7bf5a242f0d2123201aec9b195e691105ffeaa5562ee
|
7
|
+
data.tar.gz: c8691d7a0cf8f3f3eb5c3bb25db2c5ba52bc6b8ed047509f1803da745547514ea2dd4b332aa330f67703bd40c19fbca36c1bfdb569c65c2d32fafd4b38bd48fa
|
@@ -508,7 +508,7 @@ rb_gi_arguments_fill_raw_out_gerror(RBGIArguments *args,
|
|
508
508
|
gint n_args = g_callable_info_get_n_args(args->info);
|
509
509
|
/* GError ** isn't listed in args. */
|
510
510
|
GError **gerror = *((gpointer *)(args->raw_args[n_args]));
|
511
|
-
VALUE
|
511
|
+
VALUE cGLibErrorInfo = rb_const_get(mGLib, rb_intern("ErrorInfo"));
|
512
512
|
if (NIL_P(rb_error)) {
|
513
513
|
g_set_error(gerror,
|
514
514
|
RBG_RUBY_ERROR,
|
@@ -519,23 +519,22 @@ rb_gi_arguments_fill_raw_out_gerror(RBGIArguments *args,
|
|
519
519
|
VALUE backtrace = rb_funcall(rb_error, rb_intern("backtrace"), 0);
|
520
520
|
VALUE formatted_backtrace =
|
521
521
|
rb_ary_join(backtrace, rb_str_new_cstr(" \n"));
|
522
|
-
|
522
|
+
GQuark gdomain = RBG_RUBY_ERROR;
|
523
|
+
gint gcode = RBG_RUBY_ERROR_UNKNOWN;
|
524
|
+
if (RVAL2CBOOL(rb_obj_is_kind_of(rb_error, cGLibErrorInfo))) {
|
523
525
|
VALUE domain = rb_funcall(rb_error, rb_intern("domain"), 0);
|
524
526
|
VALUE code = rb_funcall(rb_error, rb_intern("code"), 0);
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
RVAL2CSTR(message),
|
530
|
-
RVAL2CSTR(formatted_backtrace));
|
531
|
-
} else {
|
532
|
-
g_set_error(gerror,
|
533
|
-
RBG_RUBY_ERROR,
|
534
|
-
RBG_RUBY_ERROR_UNKNOWN,
|
535
|
-
"%s\n %s\n",
|
536
|
-
RVAL2CSTR(message),
|
537
|
-
RVAL2CSTR(formatted_backtrace));
|
527
|
+
if (!NIL_P(domain) && !NIL_P(code)) {
|
528
|
+
gdomain = g_quark_from_string(RVAL2CSTR(domain));
|
529
|
+
gcode = NUM2INT(code);
|
530
|
+
}
|
538
531
|
}
|
532
|
+
g_set_error(gerror,
|
533
|
+
gdomain,
|
534
|
+
gcode,
|
535
|
+
"%s\n %s\n",
|
536
|
+
RVAL2CSTR(message),
|
537
|
+
RVAL2CSTR(formatted_backtrace));
|
539
538
|
}
|
540
539
|
}
|
541
540
|
|
@@ -544,7 +543,7 @@ rb_gi_arguments_fill_raw_result_interface(RBGIArguments *args,
|
|
544
543
|
VALUE rb_result,
|
545
544
|
gpointer raw_result,
|
546
545
|
GITypeInfo *type_info,
|
547
|
-
|
546
|
+
GITransfer transfer,
|
548
547
|
gboolean is_return_value)
|
549
548
|
{
|
550
549
|
GIBaseInfo *interface_info;
|
@@ -584,8 +583,37 @@ rb_gi_arguments_fill_raw_result_interface(RBGIArguments *args,
|
|
584
583
|
}
|
585
584
|
break;
|
586
585
|
case GI_INFO_TYPE_FLAGS:
|
586
|
+
rb_raise(rb_eNotImpError,
|
587
|
+
"TODO: %s::%s: out raw result(interface)[%s]: <%s>",
|
588
|
+
g_base_info_get_namespace(args->info),
|
589
|
+
g_base_info_get_name(args->info),
|
590
|
+
g_info_type_to_string(interface_type),
|
591
|
+
g_base_info_get_name(interface_info));
|
592
|
+
break;
|
587
593
|
case GI_INFO_TYPE_OBJECT:
|
588
594
|
case GI_INFO_TYPE_INTERFACE:
|
595
|
+
{
|
596
|
+
GObject *value = RVAL2GOBJ(rb_result);
|
597
|
+
GType gtype = g_registered_type_info_get_g_type(interface_info);
|
598
|
+
if (gtype != G_TYPE_NONE &&
|
599
|
+
!G_TYPE_CHECK_INSTANCE_TYPE(value, gtype)) {
|
600
|
+
rb_raise(rb_eArgError,
|
601
|
+
"%s::%s: must return <%s> object: <%" PRIsVALUE ">",
|
602
|
+
g_base_info_get_namespace(args->info),
|
603
|
+
g_base_info_get_name(args->info),
|
604
|
+
g_type_name(gtype),
|
605
|
+
rb_result);
|
606
|
+
}
|
607
|
+
if (transfer == GI_TRANSFER_EVERYTHING) {
|
608
|
+
g_object_ref(value);
|
609
|
+
}
|
610
|
+
if (is_return_value) {
|
611
|
+
ffi_return_value->v_pointer = value;
|
612
|
+
} else {
|
613
|
+
*((gpointer *)raw_result) = value;
|
614
|
+
}
|
615
|
+
}
|
616
|
+
break;
|
589
617
|
case GI_INFO_TYPE_CONSTANT:
|
590
618
|
rb_raise(rb_eNotImpError,
|
591
619
|
"TODO: %s::%s: out raw result(interface)[%s]: <%s>",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gobject-introspection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-07-
|
11
|
+
date: 2021-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: glib2
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.4.
|
19
|
+
version: 3.4.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.4.
|
26
|
+
version: 3.4.7
|
27
27
|
description: Ruby/GObjectIntrospection provides bindings of GObject Introspection
|
28
28
|
and a loader module that can generate dynamically Ruby bindings of any GObject C
|
29
29
|
libraries
|