On 2007-10-29 18:37, Niels Nes wrote: > On Mon, Oct 29, 2007 at 02:43:42PM +0100, Stefan Manegold wrote: >> On Mon, Oct 29, 2007 at 12:38:15PM +0100, Stefan Manegold wrote: >>> On Mon, Oct 29, 2007 at 07:09:42AM +0000, Niels Nes wrote: >>>> Update of /cvsroot/monetdb/MonetDB5/src/mal >>>> In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18604/src/mal >>>> >>>> Modified Files: >>>> Tag: MonetDB_5-2 >>>> mal_builder.mx >>>> Log Message: >>>> pushStr shouldn't do a GDKstrdup, as it may return an equal string from >>>> the constant cache, ie only if the returned variable holds the given string >>>> (poniters are equal) we do a string dup. This solves another memory leak. >>>> >>>> >>>> Index: mal_builder.mx >>>> =================================================================== >>>> RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_builder.mx,v >>>> retrieving revision 1.26 >>>> retrieving revision 1.26.2.1 >>>> diff -u -d -r1.26 -r1.26.2.1 >>>> --- mal_builder.mx 28 Aug 2007 19:56:41 -0000 1.26 >>>> +++ mal_builder.mx 29 Oct 2007 07:09:40 -0000 1.26.2.1 >>>> @@ -260,10 +260,12 @@ >>>> ValRecord cst; >>>> >>>> cst.vtype= TYPE_str; >>>> - cst.val.sval= GDKstrdup(val); >>>> + cst.val.sval= val; >>> gcc -DHAVE_CONFIG_H -I. >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal >>> -I../.. >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal >>> -I../optimizer >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal/../optimizer >>> -I../scheduler >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal/../scheduler >>> -I../modules/kernel >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal/../modules/kernel >>> >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/prefix.--enable-strict_--disable-optimize_--enable-debug_--enable-assert/include/MonetDB >>> >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/prefix.--enable-strict_--disable-optimize_--enable-debug_--enable-assert/include/MonetDB/common >>> >>> -I/ufs/manegold/_/scratch0/Monet/Testing/Stable/prefix.--enable-strict_--disable-optimize_--enable-debug_--enable-assert/include/MonetDB/gdk >>> -DLIBMAL -Wall -Wextra -std=c99 -g -Werror-implicit-function-declaration >>> -Werr
> or >> - >>> Wpointer-arith -Wdeclaration-after-statement -Wundef >>> -Wp,-D_FORTIFY_SOURCE=2 -D_REENTRANT -c mal_builder.c -fPIC -DPIC -o >>> .libs/libmal_la-mal_builder.o >>> cc1: warnings being treated as errors >>> /ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal/mal_builder.mx: >>> In function 'pushStr': >>> /ufs/manegold/_/scratch0/Monet/Testing/Stable/source/MonetDB5/src/mal/mal_builder.mx:263: >>> warning: assignment discards qualifiers from pointer target type >>> make[5]: *** [libmal_la-mal_builder.lo] Error 1 >> The following patch would fix the compilation --- don't know, though, >> whether the changed sematics are acceptable ... >> >> ======== >> Index: MonetDB5/src/mal/mal_builder.mx >> =================================================================== >> RCS file: /cvsroot/monetdb/MonetDB5/src/mal/mal_builder.mx,v >> retrieving revision 1.26.2.1 >> diff -u -0 -r1.26.2.1 mal_builder.mx >> --- MonetDB5/src/mal/mal_builder.mx 29 Oct 2007 07:09:40 -0000 >> 1.26.2.1 >> +++ MonetDB5/src/mal/mal_builder.mx 29 Oct 2007 13:42:15 -0000 >> @@ -51 +51 @@ >> -mal_export InstrPtr pushStr(MalBlkPtr mb, InstrPtr q, const char *val); >> +mal_export InstrPtr pushStr(MalBlkPtr mb, InstrPtr q, char *val); >> @@ -257 +257 @@ >> -pushStr(MalBlkPtr mb, InstrPtr q, const char *val) >> +pushStr(MalBlkPtr mb, InstrPtr q, char *val) > > This indeed changes the semantics. >> ======== >> >> Stefan >> >>>> cst.len= strlen(cst.val.sval); >>>> _t = defConstant(mb,TYPE_str,&cst); >>>> >>>> + if (getConstant(mb,_t).val.sval == val) > > So I guess this works too. > if (getConstant(mb,_t).val.sval == (char*)val) I don't like this one. The function prototype says it's a const char *, so I expect that it won't be changed. If you override that inside the function, you're breaking the contract between caller and callee. > Niels >>>> + getConstant(mb,_t).val.sval = GDKstrdup(val); >>>> return pushArgument(mb, q, _t); >>>> } >> -- >> | Dr. Stefan Manegold | mailto:[EMAIL PROTECTED] | >> | CWI, P.O.Box 94079 | http://www.cwi.nl/~manegold/ | >> | 1090 GB Amsterdam | Tel.: +31 (20) 592-4212 | >> | The Netherlands | Fax : +31 (20) 592-4312 | >> >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by: Splunk Inc. >> Still grepping through log files to find problems? Stop. >> Now Search log events and configuration files using AJAX and a browser. >> Download your FREE copy of Splunk now >> http://get.splunk.com/ >> _______________________________________________ >> Monetdb-developers mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/monetdb-developers > -- Sjoerd Mullender ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Monetdb-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/monetdb-developers
