Portability concerns over pq_sendbyte?

Andrew Gierth <andrew@tao11.riddles.org.uk>

From: Andrew Gierth <andrew@tao11.riddles.org.uk>
To: pgsql-hackers@postgresql.org
Date: 2018-05-24T17:13:23Z
Lists: pgsql-hackers
In PG11, pq_sendbyte got changed from taking an int parameter to taking
an int8.

While that seems to work in general, it does mean that there are now
several places in the code that do the equivalent of:

    unsigned char x = 128;
    pq_sendbyte(&buf, x);

which I believe is not well-defined since pq_sendbyte takes an int8, and
conversions of unrepresentable values to _signed_ integer types are
(iirc) implementation-dependent.

There are also some cases where pq_sendint16 is being called for an
unsigned value or a value that might exceed 32767.

Would it be better for these to take unsigned values, or have unsigned
variants?

-- 
Andrew (irc:RhodiumToad)


Commits

  1. Change pqformat.h's integer handling functions to take unsigned integers.