I started looking at 0001 again with the intent of committing it, and this caught my eye:
- /* make the amount positive for digit-reconstruction loop */ - value = -value; + /* + * make the amount positive for digit-reconstruction loop, we can + * leave INT64_MIN unchanged + */ + pg_neg_s64_overflow(value, &value); The comment mentions that we can leave the minimum value unchanged, but it doesn't explain why. Can we explain why? +static inline bool +pg_neg_s64_overflow(int64 a, int64 *result) +{ + if (unlikely(a == PG_INT64_MIN)) + { + return true; + } + else + { + *result = -a; + return false; + } +} Can we add a comment that these routines do not set "result" when true is returned? -- nathan