postgres.git / summary / log / commit / refs
commit 0a5682041dbf991bd325a7d14daf39ecfc9bd624
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue Dec 14 16:46:36 2021 +0000
First released in: 15.0, 13.6, 14.2
Fix datatype confusion in logtape.c's right_offset().
This could only matter if (a) long is wider than int, and (b) the heap
of free blocks exceeds UINT_MAX entries, which seems pretty unlikely.
Still, it's a theoretical bug, so backpatch to v13 where the typo came
in (in commit c02fdc922).
In passing, also make swap_nodes() use consistent datatypes.
Ma Liangzhu
Discussion: https://postgr.es/m/17336-fc4e522d26a750fd@postgresql.org
src/backend/utils/sort/logtape.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/backend/utils/sort/logtape.c b/src/backend/utils/sort/logtape.c
index 4792335ba49..c6fcb87d744 100644
--- a/src/backend/utils/sort/logtape.c
+++ b/src/backend/utils/sort/logtape.c
@@ -343,7 +343,7 @@ ltsReadFillBuffer(LogicalTapeSet *lts, LogicalTape *lt)
static inline void
swap_nodes(long *heap, unsigned long a, unsigned long b)
{
- unsigned long swap;
+ long swap;
swap = heap[a];
heap[a] = heap[b];
@@ -357,7 +357,7 @@ left_offset(unsigned long i)
}
static inline unsigned long
-right_offset(unsigned i)
+right_offset(unsigned long i)
{
return 2 * i + 2;
}
[parent: 3f710fc2b48d]