On Mon, Oct 29, 2007 at 08:43:53PM +0100, Sjoerd Mullender wrote:
> 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.

I'm not changing the string. Just the assignment and comparison to .sval
should be of type char*. None are changing the value.
The clean fix is do the strdup and free it if its not used, which is
as bad I guess.

Niels
> >>>>
> >>>>
> >>>> 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 
> >>> -We
 rr
> 
> >  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

-- 

Niels Nes, Centre for Mathematics and Computer Science (CWI)
Kruislaan 413, 1098 SJ Amsterdam, The Netherlands
room C0.02,  phone ++31 20 592-4098, fax ++31 20 592-4312
url: http://www.cwi.nl/~niels   e-mail: [EMAIL PROTECTED]

-------------------------------------------------------------------------
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

Reply via email to