question on some code. - Mailing list pgsql-hackers

From Chris Bowlby
Subject question on some code.
Date
Msg-id 6.2.1.2.0.20050719142034.01bdc428@mail.dreadnet.org
Whole thread Raw
Responses Re: question on some code.  (Korry <korry@starband.net>)
Re: question on some code.  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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?



pgsql-hackers by date:

Previous
From: Larry Rosenman
Date:
Subject: config.sub/config.guess.
Next
From: Korry
Date:
Subject: Re: question on some code.