[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: segv on bad gobject get call
- From: Torsten Schoenfeld <kaffeetisch gmx de>
- To: gtk-perl-list gnome org
- Subject: Re: segv on bad gobject get call
- Date: Sat, 22 Dec 2007 18:48:41 +0100
On Mon, 2007-12-10 at 19:41 -0500, muppet wrote:
> I think the point you're making is that
>
> gperl.h:249:#define SvGObject(sv) (gperl_get_object (sv))
>
>
> ought to be
>
> gperl.h:249:#define SvGObject(sv) (gperl_get_object_check (sv, G_TYPE_OBJECT))
>
>
> and, quite frankly, i don't know why it isn't.
I went ahead and made that change. Glib's and Gtk2's test suites pass.
So here's a patch. Commit?
--
Bye,
-Torsten
Index: gperl.h
===================================================================
RCS file: /cvsroot/gtk2-perl/gtk2-perl-xs/Glib/gperl.h,v
retrieving revision 1.51
diff -u -d -p -r1.51 gperl.h
--- gperl.h 16 Dec 2007 16:32:13 -0000 1.51
+++ gperl.h 22 Dec 2007 17:46:12 -0000
@@ -250,7 +215,7 @@ typedef GPerlFilename GPerlFilename_ornu
#define newSVGObject(obj) (gperl_new_object ((obj), FALSE))
#define newSVGObject_noinc(obj) (gperl_new_object ((obj), TRUE))
-#define SvGObject(sv) (gperl_get_object (sv))
+#define SvGObject(sv) (gperl_get_object_check (sv, G_TYPE_OBJECT))
#define SvGObject_ornull(sv) (gperl_sv_defined (sv) ? SvGObject (sv) : NULL)
Index: t/2.t
===================================================================
RCS file: /cvsroot/gtk2-perl/gtk2-perl-xs/Glib/t/2.t,v
retrieving revision 1.8
diff -u -d -p -r1.8 2.t
--- t/2.t 30 May 2005 17:58:25 -0000 1.8
+++ t/2.t 22 Dec 2007 17:46:12 -0000
@@ -1,3 +1,4 @@
+#!/usr/bin/perl
#
# $Header: /cvsroot/gtk2-perl/gtk2-perl-xs/Glib/t/2.t,v 1.8 2005/05/30 17:58:25 kaffeetisch Exp $
#
@@ -8,11 +9,11 @@ use strict;
use warnings;
# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl 1.t'
+# `make test'. After `make install' it should work as `perl 2.t'
#########################
-use Test::More tests => 9;
+use Test::More tests => 10;
BEGIN { use_ok('Glib'); Glib::Object->set_threadsafe (1); };
#########################
@@ -46,6 +47,13 @@ isa_ok ($obj3, 'Glib::Object');
is ($obj3, $obj2);
is ($obj3->{key}, $obj2->{key});
+# regression tests
+
+# make sure calling a Glib::Object method on something invalid results in an
+# error message, not in a segmentation fault
+eval { Glib::Object->get (123); };
+like ($@, qr/is not of type Glib::Object/);
+
__END__
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]