* eet: fix bug on 32bits computer.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 2 Aug 2010 14:30:46 +0000 (14:30 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 2 Aug 2010 14:30:46 +0000 (14:30 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eet@50743 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/lib/eet_connection.c

index c80412a..7508cd0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2010-07-20  Cedric BAIL
 
        * Improve file change detection in eet_open by checking size also.
+
+2010-08-02  Cedric BAIL
+
+       * Fix bug in eet_connection code when running on 32bits machine.
index 4f141c1..fa4b868 100644 (file)
@@ -41,13 +41,6 @@ void *    alloca (size_t);
 
 #define MAGIC_EET_DATA_PACKET 0x4270ACE1
 
-typedef struct _Eet_Message   Eet_Message;
-struct _Eet_Message
-{
-   int magic;
-   int size;
-};
-
 struct _Eet_Connection
 {
    Eet_Read_Cb  *eet_read_cb;
@@ -95,24 +88,24 @@ eet_connection_received(Eet_Connection *conn,
 
         if (conn->size == 0)
           {
-             const Eet_Message *msg;
+             const int *msg;
              size_t packet_size;
 
-             if (size < sizeof (Eet_Message))
+             if (size < sizeof (int) * 2)
                 break;
 
              msg = data;
              /* Check the magic */
-             if (ntohl(msg->magic) != MAGIC_EET_DATA_PACKET)
+             if (ntohl(msg[0]) != MAGIC_EET_DATA_PACKET)
                 break;
 
-             packet_size = ntohl(msg->size);
+             packet_size = ntohl(msg[1]);
              /* Message should always be under 64K */
              if (packet_size > 64 * 1024)
                 break;
 
-             data = (void *)(msg + 1);
-             size -= sizeof (msg);
+             data = (void *)(msg + 2);
+             size -= sizeof (int) * 2;
              if ((size_t)packet_size <= size)
                {
                   /* Not a partial receive, go the quick way. */
@@ -176,20 +169,20 @@ _eet_connection_raw_send(Eet_Connection *conn,
                          void           *data,
                          int             data_size)
 {
-   Eet_Message *message;
+   int *message;
 
    /* Message should never be above 64K */
    if (data_size > 64 * 1024)
       return EINA_FALSE;
 
-   message = alloca(data_size + sizeof (Eet_Message));
-   message->magic = htonl(MAGIC_EET_DATA_PACKET);
-   message->size = htonl(data_size);
+   message = alloca(data_size + sizeof (int) * 2);
+   message[0] = htonl(MAGIC_EET_DATA_PACKET);
+   message[1] = htonl(data_size);
 
-   memcpy(message + 1, data, data_size);
+   memcpy(message + 2, data, data_size);
 
    conn->eet_write_cb(message,
-                      data_size + sizeof (Eet_Message),
+                      data_size + sizeof (int) * 2,
                       conn->user_data);
    return EINA_TRUE;
 } /* _eet_connection_raw_send */