]> granicus.if.org Git - postgresql/commitdiff
Fix unportable assumptions about alignment of local char[n] variables.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Mar 2001 19:30:28 +0000 (19:30 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Mar 2001 19:30:28 +0000 (19:30 +0000)
src/interfaces/odbc/socket.c

index c4d0a1bec8874ffe7509e25b75e8a08c07f7c924..f8783197ec9c1f8b0d2748180affac64685d8d63 100644 (file)
@@ -227,23 +227,29 @@ SOCK_put_string(SocketClass *self, char *string)
 int
 SOCK_get_int(SocketClass *self, short len)
 {
-       char            buf[4];
-
        switch (len)
        {
                case 2:
-                       SOCK_get_n_char(self, buf, len);
+               {
+                       unsigned short  buf;
+
+                       SOCK_get_n_char(self, (char *) &buf, len);
                        if (self->reverse)
-                               return *((unsigned short *) buf);
+                               return buf;
                        else
-                               return ntohs(*((unsigned short *) buf));
+                               return ntohs(buf);
+               }
 
                case 4:
-                       SOCK_get_n_char(self, buf, len);
+               {
+                       unsigned int    buf;
+
+                       SOCK_get_n_char(self, (char *) &buf, len);
                        if (self->reverse)
-                               return *((unsigned int *) buf);
+                               return buf;
                        else
-                               return ntohl(*((unsigned int *) buf));
+                               return ntohl(buf);
+               }
 
                default:
                        self->errornumber = SOCKET_GET_INT_WRONG_LENGTH;