Cleaned up va_list handling. Hopefully this now works on all archs.
This commit is contained in:
parent
98df90013f
commit
fc8115d42f
@ -2160,5 +2160,9 @@ Th 25. Jan 17:17:01 CET 2007
|
|||||||
|
|
||||||
- Removed compiler warning due to unneeded unsigned declaration.
|
- Removed compiler warning due to unneeded unsigned declaration.
|
||||||
- Removed regression test that triggers those libc precision bugs on some archs.
|
- Removed regression test that triggers those libc precision bugs on some archs.
|
||||||
|
|
||||||
|
Fr 2. Feb 09:53:48 CET 2007
|
||||||
|
|
||||||
|
- Cleaned up va_list handling. Hopefully this now works on all archs.
|
||||||
- Set ecpg library version to 5.3.
|
- Set ecpg library version to 5.3.
|
||||||
- Set ecpg version to 4.3.1.
|
- Set ecpg version to 4.3.1.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.62 2006/10/04 00:30:11 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.63 2007/02/02 08:58:23 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.
|
||||||
@ -135,8 +135,6 @@ ECPGget_variable(va_list APREF, enum ECPGttype type, struct variable * var, bool
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef APREF
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create a list of variables
|
* create a list of variables
|
||||||
* The variables are listed with input variables preceding outputvariables
|
* The variables are listed with input variables preceding outputvariables
|
||||||
@ -156,7 +154,7 @@ ECPGget_variable(va_list APREF, enum ECPGttype type, struct variable * var, bool
|
|||||||
* ind_offset - indicator offset
|
* ind_offset - indicator offset
|
||||||
*/
|
*/
|
||||||
static bool
|
static bool
|
||||||
create_statement(int lineno, int compat, int force_indicator, struct connection * connection, struct statement ** stmt, const char *query, va_list ap)
|
create_statement(int lineno, int compat, int force_indicator, struct connection * connection, struct statement ** stmt, const char *query, va_list APREF)
|
||||||
{
|
{
|
||||||
struct variable **list = &((*stmt)->inlist);
|
struct variable **list = &((*stmt)->inlist);
|
||||||
enum ECPGttype type;
|
enum ECPGttype type;
|
||||||
@ -172,7 +170,7 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
|
|||||||
|
|
||||||
list = &((*stmt)->inlist);
|
list = &((*stmt)->inlist);
|
||||||
|
|
||||||
type = va_arg(ap, enum ECPGttype);
|
type = va_arg(APREF, enum ECPGttype);
|
||||||
|
|
||||||
while (type != ECPGt_EORT)
|
while (type != ECPGt_EORT)
|
||||||
{
|
{
|
||||||
@ -186,11 +184,7 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
|
|||||||
if (!(var = (struct variable *) ECPGalloc(sizeof(struct variable), lineno)))
|
if (!(var = (struct variable *) ECPGalloc(sizeof(struct variable), lineno)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__GNUC__) && (defined (__powerpc__) || defined(__amd64__) || defined(__x86_64__))
|
|
||||||
ECPGget_variable(ap, type, var, true);
|
ECPGget_variable(ap, type, var, true);
|
||||||
#else
|
|
||||||
ECPGget_variable(&ap, type, var, true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* if variable is NULL, the statement hasn't been prepared */
|
/* if variable is NULL, the statement hasn't been prepared */
|
||||||
if (var->pointer == NULL)
|
if (var->pointer == NULL)
|
||||||
@ -208,7 +202,7 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
|
|||||||
ptr->next = var;
|
ptr->next = var;
|
||||||
}
|
}
|
||||||
|
|
||||||
type = va_arg(ap, enum ECPGttype);
|
type = va_arg(APREF, enum ECPGttype);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
@ -1545,7 +1539,11 @@ ECPGdo(int lineno, int compat, int force_indicator, const char *connection_name,
|
|||||||
|
|
||||||
/* construct statement in our own structure */
|
/* construct statement in our own structure */
|
||||||
va_start(args, query);
|
va_start(args, query);
|
||||||
|
#if defined(__GNUC__) && (defined (__powerpc__) || defined(__amd64__) || defined(__x86_64__))
|
||||||
if (create_statement(lineno, compat, force_indicator, con, &stmt, query, args) == false)
|
if (create_statement(lineno, compat, force_indicator, con, &stmt, query, args) == false)
|
||||||
|
#else
|
||||||
|
if (create_statement(lineno, compat, force_indicator, con, &stmt, query, &args) == false)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
setlocale(LC_NUMERIC, oldlocale);
|
setlocale(LC_NUMERIC, oldlocale);
|
||||||
ECPGfree(oldlocale);
|
ECPGfree(oldlocale);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user