-----BEGIN PGP SIGNED MESSAGE----- Moin,
On Friday 10 December 2004 18:47, Tassilo von Parseval wrote: > On Fri, Dec 10, 2004 at 02:26:37PM +0100 Tels wrote: > > -----BEGIN PGP SIGNED MESSAGE----- [schnipp] This is just a followup to announce that I finally plugged the leak: It turned out that the attached routine did leak, too. Devel::Leak always showed PVs that looked like '', so the output wasn't very helpfull (because the constructed PV was not "complete", e.g. I didnt set the proper length). The caused memory loss was painfull, and it took quite a while to find out by binary searching the changed between versions where the leak exactly is. However, what ends good is good :) So, thank you again, Tassilo! If you run some older version of Math::BigInt::GMP, please upgrade to v1.17. Best wishes, Tels Can you spot the leak: ############################################################################## # _zeros() - return number of trailing zeros (in decimal form) int _zeros(Class,n) mpz_t* n PREINIT: SV* TEMP; int len; char *buf; char *buf_end; CODE: /* len is always >= 1, and might be off (greater) by one than real len */ len = mpz_sizeinbase(*n, 10); TEMP = newSV(len); /* alloc len +1 bytes */ SvPOK_on(TEMP); /* make an PV */ buf = SvPVX(TEMP); /* get ptr to storage */ buf_end = buf + len - 1; /* end of storage (-1)*/ mpz_get_str(buf, 10, *n); /* convert to decimal string */ RETVAL = 0; if (*buf_end == 0) { buf_end--; /* ptr to last real digit */ len --; /* got one shorter than expected */ } if (len > 1) /* '0' has not trailing zeross! */ { while (len-- > 0) { if (*buf_end-- != '0') { break; } RETVAL++; } } OUTPUT: RETVAL - -- Signed on Sat Jan 1 19:10:47 2005 with key 0x93B84C15. Visit my photo gallery at http://bloodgate.com/photos/ PGP key on http://bloodgate.com/tels.asc or per email. "Any sufficiently rigged demo is indistinguishable from an advanced technology." -- Don Quixote, slashdot guy -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iQEVAwUBQdbnwHcLPEOTuEwVAQGl7gf9GHGUMBR6UPKtenKg4j/o8y+pRcaclPgI 7tw91rN78McmK4HDf3gEUXqMWPexBOqGmk3XvEmkh1x93uT+SQWAh3IZlQi5MsPo SXhSExr1Fz2deFM8xKV8EmpDBCjo6Q4IJ/zSVs+rKljq838N2TcjQTxnL/3AWgbF S9aMWB08fajVJzJ0iy6zj0Kxl7WfLW/xuhutC5MkD4pyuhPZQslCJcZjd5k2wltB C+NXB6kPM66mYwBHW+kNNhVj/f/JAEFD+BnVjHzEvDRhuUr7Ahuz1Xprhdk15AfQ pY8932tcypCAe473/osafHyHupysQVjcautYpgbu4D76zDCAWdopaQ== =oRTm -----END PGP SIGNATURE-----