Re: Cairo 0.91 (beta)



On Sun, 2006-08-13 at 10:11 +0400, Alexey Tourbin wrote:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 14787)]
0xb7c0b01d in read_func_marshaller (closure=0x81ba1d0, data=0x81bac58 "\211PNG\r\n\032\n", length=8) at 
CairoSurface.xs:233
233                     memcpy (data, retval, n_a);
(gdb) l
228                     status = SvCairoStatus (ERRSV);
229             } else {
230                     STRLEN n_a;
231                     char *retval;
232                     retval = POPpx;
233                     memcpy (data, retval, n_a);
234             }
235     
236             PUTBACK;
237             FREETMPS;
(gdb) p n_a
$1 = 136029216
(gdb) 

Ouch.  Looks like POPpx changed from perl 5.8.7 to 5.8.8.  With 5.8.7,
everything works as expected for me.  `perldoc perlapi´ says

  POPpx   Pops a string off the stack.  Requires a variable STRLEN n_a in
          scope.

In my <perl>/CORE/pp.h, POPpx is defined to call SvPVx which, in sv.h,
uses SvPV which uses SvPV_flags which finally sets n_a to SvCUR(sv).
Apparently this can't be relied upon, so I'll look into using just POPs
and sv_len.

-- 
Thanks for the report,
-Torsten




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]