*** ecpglib.c.orig Tue Dec 14 12:27:47 1999 --- ecpglib.c Tue Dec 14 12:28:00 1999 *************** *** 528,540 **** { int slen = strlen((char *) var->value); ! if (!(newcopy = ecpg_alloc(slen + 1, stmt->lineno))) return false; ! strncpy(newcopy, (char *) var->value, slen); ! newcopy[slen] = '\0'; ! tobeinserted = newcopy; } break; case ECPGt_varchar: --- 528,540 ---- { int slen = strlen((char *) var->value); ! if (!(mallocedval = ecpg_alloc(slen + 1, stmt->lineno))) return false; ! strncpy(mallocedval, (char *) var->value, slen); ! mallocedval[slen] = '\0'; ! tobeinserted = mallocedval; } break; case ECPGt_varchar: *************** *** 1132,1144 **** con->committed = true; /* deallocate all prepared statements */ ! for (this = prep_stmts; this != NULL; this = this->next) ! { ! bool b = ECPGdeallocate(lineno, this->name); if (!b) return false; } } return true; --- 1132,1144 ---- con->committed = true; /* deallocate all prepared statements */ ! while(prep_stmts != NULL) { ! bool b = ECPGdeallocate(lineno, prep_stmts->name); if (!b) return false; } + } return true; *************** *** 1416,1421 **** --- 1416,1422 ---- else prep_stmts = this->next; + free(this); return true; } ECPGlog("deallocate_prepare: invalid statement name %s\n", name);