Commit 524d65d4 authored by Michael Meskes's avatar Michael Meskes

Fixed memory leak bugs found by Martijn Oosterhout.

parent a16ffee7
...@@ -1997,6 +1997,10 @@ Tu Feb 7 18:48:14 CET 2006 ...@@ -1997,6 +1997,10 @@ Tu Feb 7 18:48:14 CET 2006
Fri, 17 Mar 2006 16:38:19 +0100 Fri, 17 Mar 2006 16:38:19 +0100
- Fixed bug 2330: Wrong error code in case of a duplicate key - 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 library version to 5.2.
- Set ecpg version to 4.2.1. - 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 <stdlib.h>
#include <string.h> #include <string.h>
...@@ -166,15 +166,15 @@ ecpg_strndup(const char *str, size_t len) ...@@ -166,15 +166,15 @@ ecpg_strndup(const char *str, size_t len)
int int
deccvasc(char *cp, int len, decimal *np) deccvasc(char *cp, int len, decimal *np)
{ {
char *str = ecpg_strndup(cp, len); /* decimal_in always converts char *str;
* the complete string */ int ret = 0;
int ret = 0; numeric *result;
numeric *result;
rsetnull(CDECIMALTYPE, (char *) np); rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CSTRINGTYPE, cp)) if (risnull(CSTRINGTYPE, cp))
return 0; return 0;
str = ecpg_strndup(cp, len); /* decimal_in always converts the complete string */
if (!str) if (!str)
ret = ECPG_INFORMIX_NUM_UNDERFLOW; ret = ECPG_INFORMIX_NUM_UNDERFLOW;
else 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. * The aim is to get a simpler inteface to the database routines.
...@@ -860,7 +860,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia ...@@ -860,7 +860,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia
if (var->arrsize > 1) 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) if (var->type == ECPGt_numeric)
PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval); 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 "postgres_fe.h"
#include <ctype.h> #include <ctype.h>
...@@ -364,24 +364,19 @@ PGTYPESnumeric_from_asc(char *str, char **endptr) ...@@ -364,24 +364,19 @@ PGTYPESnumeric_from_asc(char *str, char **endptr)
numeric *value = (numeric *) pgtypes_alloc(sizeof(numeric)); numeric *value = (numeric *) pgtypes_alloc(sizeof(numeric));
int ret; int ret;
#if 0
long typmod = -1;
#endif
char *realptr; char *realptr;
char **ptr = (endptr != NULL) ? endptr : &realptr; char **ptr = (endptr != NULL) ? endptr : &realptr;
if (!value) if (!value)
return (NULL); return (NULL);
ret = set_var_from_str(str, ptr, value); ret = set_var_from_str(str, ptr, value);
if (ret) if (ret)
{
free(value);
return (NULL); return (NULL);
}
#if 0
ret = apply_typmod(value, typmod);
if (ret)
return (NULL);
#endif
return (value); return (value);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment