From 07dbc4ef099c70af672764bc84e1f7ad9a8c7917 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 5 Oct 2016 12:00:00 -0400 Subject: [PATCH v2 23/23] Fix issue with enums and va_arg() --- src/interfaces/ecpg/ecpglib/descriptor.c | 14 +++++++------- src/interfaces/ecpg/ecpglib/execute.c | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/interfaces/ecpg/ecpglib/descriptor.c b/src/interfaces/ecpg/ecpglib/descriptor.c index 79a8e4bea5..ef56b5f486 100644 --- a/src/interfaces/ecpg/ecpglib/descriptor.c +++ b/src/interfaces/ecpg/ecpglib/descriptor.c @@ -280,7 +280,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...) ecpg_log("ECPGget_desc: reading items for tuple %d\n", index); --index; - type = va_arg(args, enum ECPGdtype); + type = va_arg(args, int); memset(&data_var, 0, sizeof data_var); data_var.type = ECPGt_EORT; @@ -295,7 +295,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...) enum ECPGttype vartype; void *var; - vartype = va_arg(args, enum ECPGttype); + vartype = va_arg(args, int); var = va_arg(args, void *); varcharsize = va_arg(args, long); arrsize = va_arg(args, long); @@ -476,7 +476,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...) return (false); } - type = va_arg(args, enum ECPGdtype); + type = va_arg(args, int); } if (data_var.type != ECPGt_EORT) @@ -603,12 +603,12 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...) enum ECPGdtype itemtype; char *tobeinserted = NULL; - itemtype = va_arg(args, enum ECPGdtype); + itemtype = va_arg(args, int); if (itemtype == ECPGd_EODT) break; - var->type = va_arg(args, enum ECPGttype); + var->type = va_arg(args, int); var->pointer = va_arg(args, char *); var->varcharsize = va_arg(args, long); @@ -848,7 +848,7 @@ ECPGdescribe(int line, int compat, bool input, const char *connection_name, cons void *ptr; /* variable type */ - type = va_arg(args, enum ECPGttype); + type = va_arg(args, int); if (type == ECPGt_EORT) break; @@ -860,7 +860,7 @@ ECPGdescribe(int line, int compat, bool input, const char *connection_name, cons (void) va_arg(args, long); /* variable indicator */ - (void) va_arg(args, enum ECPGttype); + (void) va_arg(args, int); (void) va_arg(args, void *); /* skip args */ (void) va_arg(args, long); (void) va_arg(args, long); diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index bd9b86be49..51429ce05b 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -1864,7 +1864,7 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator, list = &(stmt->inlist); - type = va_arg(args, enum ECPGttype); + type = va_arg(args, int); while (type != ECPGt_EORT) { @@ -1912,7 +1912,7 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator, var->next = NULL; - var->ind_type = va_arg(args, enum ECPGttype); + var->ind_type = va_arg(args, int); var->ind_pointer = va_arg(args, char *); var->ind_varcharsize = va_arg(args, long); var->ind_arrsize = va_arg(args, long); @@ -1952,7 +1952,7 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator, ptr->next = var; } - type = va_arg(args, enum ECPGttype); + type = va_arg(args, int); } /* are we connected? */ -- 2.12.0