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@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@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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins