Hi All,

I've been doing a code audit (review) for my own personal use of the 7.4.x series code base and have come across something that I'd like to get more details on, if it is possible to do so.

I've been going over the communications section and am curious how this segment of code is actually working:


/* --------------------------------
* pq_sendint - append a binary integer to a StringInfo buffer
 * --------------------------------
 */
void
pq_sendint(StringInfo buf, int i, int b)
{
        unsigned char n8;
        uint16          n16;
        uint32          n32;

        switch (b)
        {
                case 1:
                        n8 = (unsigned char) i;
                        appendBinaryStringInfo(buf, (char *) &n8, 1);
                        break;
                case 2:
                        n16 = htons((uint16) i);
                        appendBinaryStringInfo(buf, (char *) &n16, 2);
                        break;
                case 4:
                        n32 = htonl((uint32) i);
                        appendBinaryStringInfo(buf, (char *) &n32, 4);
                        break;
                default:
                        elog(ERROR, "unsupported integer size %d", b);
                        break;
        }
}

I understand the concept of the code, to append binary values to a string buffer (char *), but, under my compiler on FreeBSD 5.4.x (gcc (GCC) 3.4.2 [FreeBSD] 20040728) I see a few issues that have cropped up.

If I understand the code right, your trying to pass in to appendBinaryStringInfo an "address" or reference to the n8, n16, or n32 variables and cast them so that a char * pointer can access that address space. Through some testing that I've been doing (outputting the values in the appendBinaryStringInfo function), I never seem to see any data, The variable pointer that references the "n8, n16, or n32" value is not holding any data in the appendBinaryStringInfo function.

This might be my miss-understanding of the function and was hoping someone would be willing to clearify it for me?


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to