Fix null checking of type decimal datums without indicator in Informix
authorPeter Eisentraut <peter_e@gmx.net>
Fri, 8 Aug 2003 13:17:58 +0000 (13:17 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Fri, 8 Aug 2003 13:17:58 +0000 (13:17 +0000)
mode.

from Dave Cramer

src/interfaces/ecpg/ecpglib/misc.c

index 4f9decbd70344e3316dd1e58f3957896a8ea69b3..579da28920498a1a5ac3cb0126ccb1bbf4ac3f6d 100644 (file)
@@ -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: