question on some code.

From: Chris Bowlby <excalibur(at)accesswave(dot)ca>
To: pgsql-hackers(at)postgresql(dot)org
Subject: question on some code.
Date: 2005-07-19 17:27:25
Message-ID: 6.2.1.2.0.20050719142034.01bdc428@mail.dreadnet.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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?

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Korry 2005-07-19 17:54:25 Re: question on some code.
Previous Message Larry Rosenman 2005-07-19 17:07:42 config.sub/config.guess.