Hello community,

here is the log from the commit of package perl-Glib-Object-Introspection for 
openSUSE:Factory checked in at 2015-01-29 09:56:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Glib-Object-Introspection (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Glib-Object-Introspection.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Glib-Object-Introspection"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Glib-Object-Introspection/perl-Glib-Object-Introspection.changes
    2015-01-22 01:00:30.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Glib-Object-Introspection.new/perl-Glib-Object-Introspection.changes
       2015-01-29 09:56:54.000000000 +0100
@@ -1,0 +2,9 @@
+Wed Jan 28 11:04:11 UTC 2015 - [email protected]
+
+- Update to 0.027:
+  * Fix compilation problems when NOISY is defined.
+  * Move the handling of void record fields into the field
+    accessors.
+  * Rename a few variables for clarity.
+
+-------------------------------------------------------------------

Old:
----
  Glib-Object-Introspection-0.026.tar.gz

New:
----
  Glib-Object-Introspection-0.027.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Glib-Object-Introspection.spec ++++++
--- /var/tmp/diff_new_pack.nMeGKS/_old  2015-01-29 09:56:55.000000000 +0100
+++ /var/tmp/diff_new_pack.nMeGKS/_new  2015-01-29 09:56:55.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Glib-Object-Introspection
 #
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define cpan_name Glib-Object-Introspection
 Name:           perl-Glib-Object-Introspection
-Version:        0.026
+Version:        0.027
 Release:        0
 Summary:        GObject Introspection bindings for Perl
 License:        LGPL-2.1+
@@ -26,10 +26,10 @@
 Url:            https://metacpan.org/pod/Glib::Object::Introspection
 Source:         
https://cpan.metacpan.org/authors/id/X/XA/XAOC/%{cpan_name}-%{version}.tar.gz
 BuildRequires:  perl
+BuildRequires:  perl-macros
 BuildRequires:  perl(ExtUtils::Depends)
 BuildRequires:  perl(ExtUtils::PkgConfig)
 BuildRequires:  perl(Glib) >= 1.180
-BuildRequires:  perl-macros
 BuildRequires:  pkgconfig(gobject-introspection-1.0)
 Requires:       perl(Glib) >= 1.180
 %{perl_requires}

++++++ Glib-Object-Introspection-0.026.tar.gz -> 
Glib-Object-Introspection-0.027.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Glib-Object-Introspection-0.026/META.json 
new/Glib-Object-Introspection-0.027/META.json
--- old/Glib-Object-Introspection-0.026/META.json       2014-12-26 
06:47:34.000000000 +0100
+++ new/Glib-Object-Introspection-0.027/META.json       2015-01-28 
00:46:51.000000000 +0100
@@ -66,5 +66,5 @@
       "x_IRC" : "irc://irc.gimp.org/#gtk-perl",
       "x_MailingList" : "https://mail.gnome.org/mailman/listinfo/gtk-perl-list";
    },
-   "version" : "0.026"
+   "version" : "0.027"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Glib-Object-Introspection-0.026/META.yml 
new/Glib-Object-Introspection-0.027/META.yml
--- old/Glib-Object-Introspection-0.026/META.yml        2014-12-26 
06:47:33.000000000 +0100
+++ new/Glib-Object-Introspection-0.027/META.yml        2015-01-28 
00:46:51.000000000 +0100
@@ -36,4 +36,4 @@
   homepage: http://gtk2-perl.sourceforge.net
   license: http://www.gnu.org/licenses/lgpl-2.1.html
   repository: git://git.gnome.org/perl-Glib-Object-Introspection
-version: '0.026'
+version: '0.027'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Glib-Object-Introspection-0.026/NEWS 
new/Glib-Object-Introspection-0.027/NEWS
--- old/Glib-Object-Introspection-0.026/NEWS    2014-12-26 06:47:01.000000000 
+0100
+++ new/Glib-Object-Introspection-0.027/NEWS    2015-01-28 00:42:30.000000000 
+0100
@@ -1,3 +1,10 @@
+Overview of changes in Glib::Object::Introspection 0.027
+========================================================
+
+* Fix compilation problems when NOISY is defined
+* Move the handling of void record fields into the field accessors
+* Rename a few variables for clarity
+
 Overview of changes in Glib::Object::Introspection 0.026
 ========================================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Glib-Object-Introspection-0.026/gperl-i11n-field.c 
new/Glib-Object-Introspection-0.027/gperl-i11n-field.c
--- old/Glib-Object-Introspection-0.026/gperl-i11n-field.c      2014-09-29 
22:26:17.000000000 +0200
+++ new/Glib-Object-Introspection-0.027/gperl-i11n-field.c      2015-01-13 
07:29:07.000000000 +0100
@@ -55,31 +55,52 @@
 get_field (GIFieldInfo *field_info, gpointer mem, GITransfer transfer)
 {
        GITypeInfo *field_type;
+       GITypeTag field_tag;
        GIBaseInfo *interface_info;
+       GIInfoType interface_type;
        GIArgument value;
        SV *sv = NULL;
 
        field_type = g_field_info_get_type (field_info);
+       field_tag = g_type_info_get_tag (field_type);
        interface_info = g_type_info_get_interface (field_type);
+       interface_type = interface_info
+               ? g_base_info_get_type (interface_info)
+               : GI_INFO_TYPE_INVALID;
 
-       /* This case is not handled by g_field_info_set_field. */
+       /* Non-pointer structs are not handled by g_field_info_get_field. */
        if (!g_type_info_is_pointer (field_type) &&
-           g_type_info_get_tag (field_type) == GI_TYPE_TAG_INTERFACE &&
-           g_base_info_get_type (interface_info) == GI_INFO_TYPE_STRUCT)
+           field_tag == GI_TYPE_TAG_INTERFACE &&
+           interface_type == GI_INFO_TYPE_STRUCT)
        {
-               gint offset;
-               offset = g_field_info_get_offset (field_info);
-               value.v_pointer = mem + offset;
+               gint offset = g_field_info_get_offset (field_info);
+               value.v_pointer = G_STRUCT_MEMBER_P (mem, offset);
                sv = arg_to_sv (&value,
                                field_type,
                                GI_TRANSFER_NOTHING,
                                NULL);
-       } else if (g_field_info_get_field (field_info, mem, &value)) {
+       }
+
+       /* Neither are void pointers.  We retrieve the RV to the SV that
+        * set_field put into them. */
+       else if (field_tag == GI_TYPE_TAG_VOID &&
+                g_type_info_is_pointer (field_type))
+       {
+               gint offset = g_field_info_get_offset (field_info);
+               value.v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset);
+               sv = value.v_pointer
+                       ? newRV (value.v_pointer)
+                       : &PL_sv_undef;
+       }
+
+       else if (g_field_info_get_field (field_info, mem, &value)) {
                sv = arg_to_sv (&value,
                                field_type,
                                transfer,
                                NULL);
-       } else {
+       }
+
+       else {
                ccroak ("Could not get field '%s'",
                        g_base_info_get_name (field_info));
        }
@@ -95,21 +116,21 @@
 set_field (GIFieldInfo *field_info, gpointer mem, GITransfer transfer, SV *sv)
 {
        GITypeInfo *field_type;
+       GITypeTag field_tag;
        GIBaseInfo *interface_info;
-       GITypeTag tag;
-       GIInfoType info_type;
+       GIInfoType interface_type;
        GIArgument arg;
 
        field_type = g_field_info_get_type (field_info);
-       tag = g_type_info_get_tag (field_type);
+       field_tag = g_type_info_get_tag (field_type);
        interface_info = g_type_info_get_interface (field_type);
-       info_type = interface_info
+       interface_type = interface_info
                ? g_base_info_get_type (interface_info)
                : GI_INFO_TYPE_INVALID;
 
        /* Structs are not handled by g_field_info_set_field. */
-       if (tag == GI_TYPE_TAG_INTERFACE &&
-           info_type == GI_INFO_TYPE_STRUCT)
+       if (field_tag == GI_TYPE_TAG_INTERFACE &&
+           interface_type == GI_INFO_TYPE_STRUCT)
        {
                /* FIXME: No GIArgInfo and no GPerlI11nInvocationInfo here.
                 * What if the struct contains an object pointer, or a callback
@@ -122,10 +143,10 @@
                         * 'mem' */
                        arg.v_pointer = sv_to_struct (GI_TRANSFER_NOTHING,
                                                      interface_info,
-                                                     info_type,
+                                                     interface_type,
                                                      sv);
                        size = g_struct_info_get_size (interface_info);
-                       g_memmove (mem + offset, arg.v_pointer, size);
+                       g_memmove (G_STRUCT_MEMBER_P (mem, offset), 
arg.v_pointer, size);
                } else {                                        /* Pointer */
                        GType gtype = get_gtype (interface_info);
                        if (g_type_is_a (gtype, G_TYPE_BOXED)) {
@@ -150,22 +171,21 @@
                                G_STRUCT_MEMBER (gpointer, mem, offset) =
                                        sv_to_struct (GI_TRANSFER_NOTHING,
                                                      interface_info,
-                                                     info_type,
+                                                     interface_type,
                                                      sv);
                        }
                }
        }
 
        /* Neither are void pointers.  We put an RV to the SV into them, which
-        * goes hand in hand with what get_field() is doing above via
-        * arg_to_sv(). */
-       else if (tag == GI_TYPE_TAG_VOID &&
+        * goes hand in hand with what get_field() is doing above. */
+       else if (field_tag == GI_TYPE_TAG_VOID &&
                 g_type_info_is_pointer (field_type))
        {
                gint offset = g_field_info_get_offset (field_info);
-               sv_to_arg (sv, &arg, NULL, field_type,
-                          transfer, TRUE, NULL);
-               G_STRUCT_MEMBER (gpointer, mem, offset) = arg.v_pointer;
+               if (!gperl_sv_is_ref (sv))
+                       ccroak ("Can only put references into void fields");
+               G_STRUCT_MEMBER (gpointer, mem, offset) = SvRV (sv);
        }
 
        else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Glib-Object-Introspection-0.026/gperl-i11n-invoke-c.c 
new/Glib-Object-Introspection-0.027/gperl-i11n-invoke-c.c
--- old/Glib-Object-Introspection-0.026/gperl-i11n-invoke-c.c   2014-09-29 
22:26:17.000000000 +0200
+++ new/Glib-Object-Introspection-0.027/gperl-i11n-invoke-c.c   2015-01-13 
07:29:07.000000000 +0100
@@ -350,8 +350,8 @@
        dwarn ("C invoke: %s\n"
               "  n_args: %d, n_invoke_args: %d, n_given_args: %d\n"
               "  is_constructor: %d, is_method: %d\n",
-              iinfo->is_vfunc ? g_base_info_get_name (info) : 
g_function_info_get_symbol (info),
-              iinfo->n_args, iinfo->n_invoke_args, iinfo->n_given_args,
+              iinfo->base.is_vfunc ? g_base_info_get_name (info) : 
g_function_info_get_symbol (info),
+              iinfo->base.n_args, iinfo->n_invoke_args, iinfo->n_given_args,
               iinfo->is_constructor, iinfo->is_method);
 
        /* allocate enough space for all args in both the out and in lists.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Glib-Object-Introspection-0.026/gperl-i11n-invoke-perl.c 
new/Glib-Object-Introspection-0.027/gperl-i11n-invoke-perl.c
--- old/Glib-Object-Introspection-0.026/gperl-i11n-invoke-perl.c        
2014-09-29 22:26:17.000000000 +0200
+++ new/Glib-Object-Introspection-0.027/gperl-i11n-invoke-perl.c        
2015-01-13 07:29:07.000000000 +0100
@@ -367,7 +367,7 @@
                                GITypeInfo *length_arg_type = 
iinfo->base.arg_types[pos];
                                raw_to_arg (args[pos], 
&iinfo->base.aux_args[pos], length_arg_type);
                                dwarn ("  pos %d is array length => 
%"G_GSIZE_FORMAT"\n",
-                                      pos, iinfo->aux_args[pos].v_size);
+                                      pos, iinfo->base.aux_args[pos].v_size);
                        }
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Glib-Object-Introspection-0.026/gperl-i11n-marshal-arg.c 
new/Glib-Object-Introspection-0.027/gperl-i11n-marshal-arg.c
--- old/Glib-Object-Introspection-0.026/gperl-i11n-marshal-arg.c        
2014-09-29 22:26:17.000000000 +0200
+++ new/Glib-Object-Introspection-0.027/gperl-i11n-marshal-arg.c        
2015-01-13 07:29:07.000000000 +0100
@@ -32,11 +32,6 @@
            case GI_TYPE_TAG_VOID:
                /* returns NULL if no match is found */
                arg->v_pointer = sv_to_callback_data (sv, invocation_info);
-               if (!arg->v_pointer && g_type_info_is_pointer (type_info)
-                   && gperl_sv_is_ref (sv))
-               {
-                       arg->v_pointer = SvRV (sv);
-               }
                dwarn ("    argument with no type information -> pointer %p\n",
                       arg->v_pointer);
                break;
@@ -168,10 +163,6 @@
                SV *sv = callback_data_to_sv (arg->v_pointer, iinfo);
                if (sv) {
                        SvREFCNT_inc (sv);
-               } else {
-                       if (arg->v_pointer && g_type_info_is_pointer (info)) {
-                               sv = newRV (arg->v_pointer);
-                       }
                }
                dwarn ("    argument with no type information -> SV %p\n", sv);
                return sv ? sv : &PL_sv_undef;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Glib-Object-Introspection-0.026/lib/Glib/Object/Introspection.pm 
new/Glib-Object-Introspection-0.027/lib/Glib/Object/Introspection.pm
--- old/Glib-Object-Introspection-0.026/lib/Glib/Object/Introspection.pm        
2014-12-26 06:47:13.000000000 +0100
+++ new/Glib-Object-Introspection-0.027/lib/Glib/Object/Introspection.pm        
2015-01-28 00:45:05.000000000 +0100
@@ -19,7 +19,7 @@
 use warnings;
 use Glib;
 
-our $VERSION = '0.026';
+our $VERSION = '0.027';
 
 use Carp;
 $Carp::Internal{(__PACKAGE__)}++;

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to