mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Fix unportable assumptions about alignment of local char[n] variables.
This commit is contained in:
parent
39ceedf5e0
commit
1ed61b3a9c
@ -227,23 +227,29 @@ SOCK_put_string(SocketClass *self, char *string)
|
|||||||
int
|
int
|
||||||
SOCK_get_int(SocketClass *self, short len)
|
SOCK_get_int(SocketClass *self, short len)
|
||||||
{
|
{
|
||||||
char buf[4];
|
|
||||||
|
|
||||||
switch (len)
|
switch (len)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
SOCK_get_n_char(self, buf, len);
|
{
|
||||||
|
unsigned short buf;
|
||||||
|
|
||||||
|
SOCK_get_n_char(self, (char *) &buf, len);
|
||||||
if (self->reverse)
|
if (self->reverse)
|
||||||
return *((unsigned short *) buf);
|
return buf;
|
||||||
else
|
else
|
||||||
return ntohs(*((unsigned short *) buf));
|
return ntohs(buf);
|
||||||
|
}
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
SOCK_get_n_char(self, buf, len);
|
{
|
||||||
|
unsigned int buf;
|
||||||
|
|
||||||
|
SOCK_get_n_char(self, (char *) &buf, len);
|
||||||
if (self->reverse)
|
if (self->reverse)
|
||||||
return *((unsigned int *) buf);
|
return buf;
|
||||||
else
|
else
|
||||||
return ntohl(*((unsigned int *) buf));
|
return ntohl(buf);
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
self->errornumber = SOCKET_GET_INT_WRONG_LENGTH;
|
self->errornumber = SOCKET_GET_INT_WRONG_LENGTH;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user