On Sat, Mar 20, 2010 at 12:53:12PM +0000, Martin Kersten wrote: > Update of /cvsroot/monetdb/MonetDB5/src/modules/kernel > In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10537 > > Modified Files: > Tag: Feb2010 > batcast.mx > Log Message: > Backport of possible dangerous double frees. No roll forward needed.
While your revised code looks indeed more efficient to me (as it allows ATOMfromstr() --- well, at least strFromStr(); I cannot tell about other "extern" (varsized) atoms --- to reuse a allocated temporary buffer), I wonder whether/why the original experienced double frees? Called with v==NULL, ATOMfromstr() --- again, I refer only to strFromStr(); FromStr functions for other "extern" (varsized) atoms might behave differently; IMHO, we don't have any "contract" or "policies" for FromStr() implementations --- would allocate a buffer for the result, ATOMput() copies the value from the buffer to the BAT heap, and then the buffer is (was) freed. Looks very sound to me. What am I missing? I would be thankful for any enlightment. Stefan > Index: batcast.mx > =================================================================== > RCS file: /cvsroot/monetdb/MonetDB5/src/modules/kernel/batcast.mx,v > retrieving revision 1.31.2.7 > retrieving revision 1.31.2.8 > diff -u -d -r1.31.2.7 -r1.31.2.8 > --- batcast.mx 18 Feb 2010 01:04:05 -0000 1.31.2.7 > +++ batcast.mx 20 Mar 2010 12:53:10 -0000 1.31.2.8 > @@ -248,6 +248,8 @@ > BAT *b,*bn; > BATiter bi; > BUN p, q, r = 0; > + ptr v = NULL; > + int len = 0; > > @:getBATdescriptor(bid, b, "batca...@1")@ > @:voidresultBAT(ty...@1,"batca...@1")@ > @@ -255,15 +257,12 @@ > > BATaccessBegin(b, USE_TAIL, MMAP_SEQUENTIAL); > BATloop(b, p, q) { > - ptr v = NULL; > - int len = 0; > - > ATOMfromstr(ty...@1, &v, &len, (char *) BUNtvar(bi, p)); > ATOMput(ty...@1, bn->T->vheap, Tloc(bn, r), v); > - if (ATOMextern(ty...@1)) > - GDKfree(v); > r++; > } > + if (ATOMextern(ty...@1)) > + GDKfree(v); > BATsetcount(bn, BATcount(b)); > bunins_failed: > BATaccessEnd(b, USE_TAIL, MMAP_SEQUENTIAL); > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > Monetdb-checkins mailing list > monetdb-check...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/monetdb-checkins > -- | Dr. Stefan Manegold | mailto:stefan.maneg...@cwi.nl | | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | | The Netherlands | Fax : +31 (20) 592-4199 | ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Monetdb-developers mailing list Monetdb-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-developers