[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:14:57 CEST 2007


Fabian Groffen wrote:
> Hi Jan,
> 
> I experience the same issue.  The attached patch works for me.  I'm not
> sure why it worked for Sjoerd here, so I'm not committing.

Because I tried it on Windows using the Intel compiler.

> On 02-05-2007 09:52:24 +0200, 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-developers mailing list
>> Monetdb-developers at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/monetdb-developers
>>
>> ------------------------------------------------------------------------
>>
>> Index: milprint_summer.c
>> ===================================================================
>> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint_summer.c,v
>> retrieving revision 1.368
>> diff -u -r1.368 milprint_summer.c
>> --- milprint_summer.c	1 May 2007 15:57:59 -0000	1.368
>> +++ milprint_summer.c	2 May 2007 08:08:22 -0000
>> @@ -58,6 +58,7 @@
>>  #include "pathfinder.h"
>>  
>>  #include <stdio.h>
>> +#include <stdlib.h>
>>  #include <assert.h>
>>  #include <string.h>
>>  
>>
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> 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/737850d2/attachment.sig>


More information about the developers-list mailing list