postgres.git / summary / log / commit / refs

commit    25c7faa1feeeff040242100d61b1f8914db3d3ea
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Tue Dec 14 16:46:36 2021 +0000

    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 cafc0872549..b97414c7518 100644 --- a/src/backend/utils/sort/logtape.c +++ b/src/backend/utils/sort/logtape.c @@ -345,7 +345,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]; @@ -359,7 +359,7 @@ left_offset(unsigned long i) } static inline unsigned long -right_offset(unsigned i) +right_offset(unsigned long i) { return 2 * i + 2; } [parent: 4be3e005e5da]