Commit fc8115d4 authored by Michael Meskes's avatar Michael Meskes

Cleaned up va_list handling. Hopefully this now works on all archs.

parent 98df9001
......@@ -2160,5 +2160,9 @@ Th 25. Jan 17:17:01 CET 2007
- Removed compiler warning due to unneeded unsigned declaration.
- 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 version to 4.3.1.
/* $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.
......@@ -135,8 +135,6 @@ ECPGget_variable(va_list APREF, enum ECPGttype type, struct variable * var, bool
}
}
#undef APREF
/*
* create a list of variables
* 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
*/
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);
enum ECPGttype type;
......@@ -172,7 +170,7 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
list = &((*stmt)->inlist);
type = va_arg(ap, enum ECPGttype);
type = va_arg(APREF, enum ECPGttype);
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)))
return false;
#if defined(__GNUC__) && (defined (__powerpc__) || defined(__amd64__) || defined(__x86_64__))
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 (var->pointer == NULL)
......@@ -208,7 +202,7 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
ptr->next = var;
}
type = va_arg(ap, enum ECPGttype);
type = va_arg(APREF, enum ECPGttype);
}
return (true);
......@@ -1545,7 +1539,11 @@ ECPGdo(int lineno, int compat, int force_indicator, const char *connection_name,
/* construct statement in our own structure */
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)
#else
if (create_statement(lineno, compat, force_indicator, con, &stmt, query, &args) == false)
#endif
{
setlocale(LC_NUMERIC, oldlocale);
ECPGfree(oldlocale);
......
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