[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: segv on stack extending
- From: Kevin Ryde <user42 zip com au>
- To: gtk-perl-list gnome org
- Subject: Re: segv on stack extending
- Date: Tue, 02 Sep 2008 09:18:41 +1000
Torsten Schoenfeld <kaffeetisch gmx de> writes:
>
> Yeah, I think this is what's happening. Unfortunately,
> Glib::Object::get also uses ST in the loop to access the global stack
> pointer directly.
Ah, yep, another where PPCODE unhelpfully pops your args at the start of
the func. (If you're foolish enough to PUTBACK :-)
> But maybe there's a better way?
What about leaving the names on the stack and replacing progressively
with the results. (Note the change from PPCODE: to CODE:, the latter
not using a local "SP" at all and not popping anything until you
XSRETURN ... umm, if I'm right about that.)
--- GObject.xs 19 Aug 2008 08:25:23 +1000 1.76
+++ GObject.xs 02 Sep 2008 08:45:57 +1000
@@ -1190,16 +1190,17 @@
PREINIT:
GValue value = {0,};
int i;
- PPCODE:
+ CODE:
PERL_UNUSED_VAR (ix);
EXTEND (SP, items-1);
for (i = 1; i < items; i++) {
char *name = SvPV_nolen (ST (i));
init_property_value (object, name, &value);
g_object_get_property (object, name, &value);
- PUSHs(sv_2mortal(_gperl_sv_from_value_internal(&value, TRUE)));
+ ST(i-1) = sv_2mortal(_gperl_sv_from_value_internal(&value, TRUE));
g_value_unset (&value);
}
+ XSRETURN(items-1);
=for apidoc Glib::Object::set
--
For a happy marriage a woman needs a man who makes plenty of money, a man
who's attentive in the bedroom, a man who's a good father, and a man who can
do bits of renovation around the house. Then all she has to worry about is
making sure those four blokes never meet.
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]