mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Fixed memory leak bugs found by Martijn Oosterhout.
This commit is contained in:
@ -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.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $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)
|
|||||||
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
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $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
|
|||||||
|
|
||||||
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);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $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)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user