diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-12-14 11:46:36 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-12-14 11:46:48 -0500 |
commit | 0a5682041dbf991bd325a7d14daf39ecfc9bd624 (patch) | |
tree | 096cf75790de9bc744176a5b45f003adc80339ef /src | |
parent | 3f710fc2b48d6326958260f10bd139a1e87fcf53 (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/sort/logtape.c | 4 |
1 files 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; } |