Changeset: 0e1197e09170 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0e1197e09170
Modified Files:
monetdb5/mal/mal_instruction.c
Branch: default
Log Message:
Reinstate old (not freed) pointers after failed realloc.
diffs (32 lines):
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -153,12 +153,14 @@ resizeMalBlk(MalBlkPtr mb, int elements)
assert(mb->vsize >= mb->ssize);
if( elements > mb->ssize){
+ InstrPtr *ostmt = mb->stmt;
mb->stmt = (InstrPtr *) GDKrealloc(mb->stmt, elements *
sizeof(InstrPtr));
if ( mb->stmt ){
for ( i = mb->ssize; i < elements; i++)
mb->stmt[i] = 0;
mb->ssize = elements;
} else {
+ mb->stmt = ostmt; /* reinstate old pointer */
mb->errors++;
showException(GDKout, MAL, "resizeMalBlk", "out of
memory (requested: "LLFMT" bytes)", (lng) elements * sizeof(InstrPtr));
return -1;
@@ -167,11 +169,13 @@ resizeMalBlk(MalBlkPtr mb, int elements)
if( elements > mb->vsize){
+ VarRecord *ovar = mb->var;
mb->var = (VarRecord*) GDKrealloc(mb->var, elements * sizeof
(VarRecord));
if ( mb->var ){
memset( ((char*) mb->var) + sizeof(VarRecord) *
mb->vsize, 0, (elements - mb->vsize) * sizeof(VarRecord));
mb->vsize = elements;
} else{
+ mb->var = ovar;
mb->errors++;
showException(GDKout, MAL, "resizeMalBlk", "out of
memory (requested: "LLFMT" bytes)", (lng) elements * sizeof(InstrPtr));
return -1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list