Fri, 17 Mar 2006 16:38:19 +0100
- Fixed bug 2330: Wrong error code in case of a duplicate key
+
+Mo Apr 24 11:40:05 CEST 2006
+
+ - Fixed memory leak bugs found by Martijn Oosterhout.
- Set ecpg library version to 5.2.
- Set ecpg version to 4.2.1.
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/informix.c,v 1.41 2006/03/11 04:38:39 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/informix.c,v 1.42 2006/04/24 09:45:22 meskes Exp $ */
#include <stdlib.h>
#include <string.h>
int
deccvasc(char *cp, int len, decimal *np)
{
- char *str = ecpg_strndup(cp, len); /* decimal_in always converts
- * the complete string */
- int ret = 0;
- numeric *result;
+ char *str;
+ int ret = 0;
+ numeric *result;
rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CSTRINGTYPE, cp))
return 0;
+ str = ecpg_strndup(cp, len); /* decimal_in always converts the complete string */
if (!str)
ret = ECPG_INFORMIX_NUM_UNDERFLOW;
else
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.44 2005/11/30 12:49:49 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.45 2006/04/24 09:45:22 meskes Exp $ */
/*
* The aim is to get a simpler inteface to the database routines.
if (var->arrsize > 1)
{
- for (element = 0; element < var->arrsize; element++)
+ for (element = 0; element < var->arrsize; element++, nval = PGTYPESnumeric_new())
{
if (var->type == ECPGt_numeric)
PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval);
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/numeric.c,v 1.25 2006/03/11 04:38:40 momjian Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/pgtypeslib/numeric.c,v 1.26 2006/04/24 09:45:22 meskes Exp $ */
#include "postgres_fe.h"
#include <ctype.h>
numeric *value = (numeric *) pgtypes_alloc(sizeof(numeric));
int ret;
-#if 0
- long typmod = -1;
-#endif
char *realptr;
char **ptr = (endptr != NULL) ? endptr : &realptr;
- if (!value)
+ if (!value)
return (NULL);
ret = set_var_from_str(str, ptr, value);
if (ret)
+ {
+ free(value);
return (NULL);
+ }
-#if 0
- ret = apply_typmod(value, typmod);
- if (ret)
- return (NULL);
-#endif
return (value);
}