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

Fabian Groffen Fabian.Groffen at cwi.nl
Wed May 2 10:09:19 CEST 2007


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.


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


More information about the developers-list mailing list