Fix null checking of type decimal datums without indicator in Informix
authorPeter Eisentraut <[email protected]>
Fri, 8 Aug 2003 13:17:58 +0000 (13:17 +0000)
committerPeter Eisentraut <[email protected]>
Fri, 8 Aug 2003 13:17:58 +0000 (13:17 +0000)
mode.

from Dave Cramer

src/interfaces/ecpg/ecpglib/misc.c

index e87643d8df59ba90ee0f0451d26c69ec172f7c73..63d4d969b1557a1c27b8cec64cf6c76b50a248a2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.13 2003/08/04 00:43:32 momjian Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.14 2003/08/08 13:17:58 petere Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -263,7 +263,7 @@ ECPGset_informix_null(enum ECPGttype type, void *ptr)
    {
        case ECPGt_char:
        case ECPGt_unsigned_char:
-           *((char *) ptr) = 0x00;
+           *((char *) ptr) = '\0';
            break;
        case ECPGt_short:
        case ECPGt_unsigned_short:
@@ -294,9 +294,11 @@ ECPGset_informix_null(enum ECPGttype type, void *ptr)
            *(((struct ECPGgeneric_varchar *) ptr)->arr) = 0x00;
            break;
        case ECPGt_decimal:
+           memset((char *) ptr, 0, sizeof(Decimal));
            ((Decimal *) ptr)->sign = NUMERIC_NAN;
            break;
        case ECPGt_numeric:
+           memset((char *) ptr, 0, sizeof(Numeric));
            ((Numeric *) ptr)->sign = NUMERIC_NAN;
            break;
        case ECPGt_interval:
@@ -326,7 +328,7 @@ ECPGis_informix_null(enum ECPGttype type, void *ptr)
    {
        case ECPGt_char:
        case ECPGt_unsigned_char:
-           if (*((char *) ptr) == 0x00)
+           if (*((char *) ptr) == '\0')
                return true;
            break;
        case ECPGt_short: