[Monetdb-developers] [Monetdb-pf-checkins] pathfinder/compiler/mil milprint_summer.c, 1.367, 1.368

Sjoerd Mullender sjoerd at acm.org
Wed May 2 10:13:33 CEST 2007


Fixed.

Jan Flokstra wrote:
> I have great compilation troubles with the last lesson from the master:-) The 
> compiler doesn not know the realloc() and the malloc() function() in the 
> current setting. When I change them into PFrealloc() and PFmalloc() it 
> compiles. But then I still have problems with the "free(buf);" line. There is 
> no PFfree(); and I think GDKfree() will not always work,
> 
> JanF.
> 
> On Tuesday 01 May 2007 17:58, Sjoerd Mullender wrote:
>> Update of /cvsroot/monetdb/pathfinder/compiler/mil
>> In directory sc8-pr-cvs16:/tmp/cvs-serv17830
>>
>> Modified Files:
>> 	milprint_summer.c
>> Log Message:
>> When you want to use a library function, make sure the appropriate
>> include file is included.  For alloca there is an extra twist: for the
>> way to include alloca.h see e.g. monet_utils.mx.  Do not hide the lack
>> of a declaration with a cast.  The compiler then thinks the function
>> returns an int which may well be smaller in space than the actual
>> value, and hence some bytes of the value may get lost.
>>
>> Having said this, alloca should *not* be used in a loop.  It allocates
>> memory in each iteration which is only freed at the end of the
>> function.  If the loop loops many times, that can be a lot of memory
>> which is allocated on the stack (which is a very finite resource!).
>>
>> Here ends today's lesson.
>>
>>
>> Index: milprint_summer.c
>> ===================================================================
>> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint_summer.c,v
>> retrieving revision 1.367
>> retrieving revision 1.368
>> diff -u -d -r1.367 -r1.368
>> --- milprint_summer.c	27 Apr 2007 18:22:40 -0000	1.367
>> +++ milprint_summer.c	1 May 2007 15:57:59 -0000	1.368
>> @@ -11140,12 +11140,18 @@
>>          /* ============================= */
>>          /* initialize function variables */
>>          /* ============================= */
>> +        size_t maxbufsize = 0;
>> +        char *buf = NULL;
>>          while (args->kind != c_nil)
>>          {
>>              /* get the type name, and assure there *is* a namespace */
>>              char *tpe = PFty_str(TY(LR(args)));
>> -            char *buf = (char*) alloca(4+strlen(tpe));
>> -            char *nme = buf;
>> +            char *nme;
>> +            if (maxbufsize < strlen(tpe) + 4) {
>> +                maxbufsize = strlen(tpe) + 4;
>> +                buf = buf ? realloc(buf, maxbufsize) : malloc(maxbufsize);
>> +            }
>> +            nme = buf;
>>              if (strchr(tpe, ':') == NULL)  {
>>                  *buf++ = 'x';
>>                  *buf++ = 's';
>> @@ -11171,6 +11177,8 @@
>>
>>              args = R(args);
>>          }
>> +        if (buf)
>> +            free(buf);
>>          /* create the full signature that also is a valid MIL identifier
>> */ c->sem.fun->sig = PFmalloc(12+3*(strlen(sig)+strlen(p)));
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> _______________________________________________
>> Monetdb-pf-checkins mailing list
>> Monetdb-pf-checkins at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Monetdb-pf-checkins mailing list
> Monetdb-pf-checkins at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins


-- 
Sjoerd Mullender

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 369 bytes
Desc: OpenPGP digital signature
URL: <http://www.monetdb.org/pipermail/developers-list/attachments/20070502/59fbef25/attachment.sig>


More information about the developers-list mailing list