Fixed array checking code for "unsigned long long" datatypes in libecpg.
authorMichael Meskes <[email protected]>
Mon, 1 Aug 2016 04:36:27 +0000 (06:36 +0200)
committerMichael Meskes <[email protected]>
Mon, 1 Aug 2016 13:08:36 +0000 (15:08 +0200)
src/interfaces/ecpg/ecpglib/data.c

index a04da1a99627cdf0af1f11ed084d86a252cebe90..179897167a33363c332ef8dc3db42a9d07196660 100644 (file)
@@ -374,8 +374,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
 #ifdef HAVE_STRTOULL
                case ECPGt_unsigned_long_long:
                    *((unsigned long long int *) (var + offset * act_tuple)) = strtoull(pval, &scan_length, 10);
-                   if ((isarray && *scan_length != ',' && *scan_length != '}')
-                       || (!isarray && !(INFORMIX_MODE(compat) && *scan_length == '.') && *scan_length != '\0' && *scan_length != ' '))        /* Garbage left */
+                   if (garbage_left(isarray, scan_length, compat))
                    {
                        ecpg_raise(lineno, ECPG_UINT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
                        return (false);