From: Michael Meskes Date: Fri, 2 Feb 2007 08:58:23 +0000 (+0000) Subject: Cleaned up va_list handling. Hopefully this now works on all archs. X-Git-Tag: REL8_3_BETA1~1340 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fc8115d42f24f17a9cc266d583c2fb98af2672ab;p=postgresql Cleaned up va_list handling. Hopefully this now works on all archs. --- diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 7a2ca24700..5bb0fafeac 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -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. diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index 15edddcea2..2331250bba 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -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. @@ -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);