diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:18:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:18:04 +0000 |
commit | 1d82e40c4e30d4666490f7a02db711541b5bb77f (patch) | |
tree | dcc6d635e272e13637f4ffedb91a3756f4a54c9b /contrib/intarray/_int_gist.c | |
parent | Adding debian version 15.5-0+deb12u1. (diff) | |
download | postgresql-15-1d82e40c4e30d4666490f7a02db711541b5bb77f.tar.xz postgresql-15-1d82e40c4e30d4666490f7a02db711541b5bb77f.zip |
Merging upstream version 15.6.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'contrib/intarray/_int_gist.c')
-rw-r--r-- | contrib/intarray/_int_gist.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/contrib/intarray/_int_gist.c b/contrib/intarray/_int_gist.c index ea79c4b..5d46b6b 100644 --- a/contrib/intarray/_int_gist.c +++ b/contrib/intarray/_int_gist.c @@ -296,8 +296,7 @@ g_int_decompress(PG_FUNCTION_ARGS) ArrayType *in; int lenin; int *din; - int i, - j; + int i; in = DatumGetArrayTypeP(entry->key); @@ -341,9 +340,12 @@ g_int_decompress(PG_FUNCTION_ARGS) dr = ARRPTR(r); for (i = 0; i < lenin; i += 2) - for (j = din[i]; j <= din[i + 1]; j++) + { + /* use int64 for j in case din[i + 1] is INT_MAX */ + for (int64 j = din[i]; j <= din[i + 1]; j++) if ((!i) || *(dr - 1) != j) - *dr++ = j; + *dr++ = (int) j; + } if (in != (ArrayType *) DatumGetPointer(entry->key)) pfree(in); |