From 1edd7e4ffad487c8968f4d6940c14ded50c5c320 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Mon, 2 Aug 2010 14:30:46 +0000 Subject: [PATCH] * eet: fix bug on 32bits computer. SVN revision: 50743 --- legacy/eet/ChangeLog | 4 ++++ legacy/eet/src/lib/eet_connection.c | 31 +++++++++++------------------ 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/legacy/eet/ChangeLog b/legacy/eet/ChangeLog index c80412a4ea..7508cd0040 100644 --- a/legacy/eet/ChangeLog +++ b/legacy/eet/ChangeLog @@ -409,3 +409,7 @@ 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. diff --git a/legacy/eet/src/lib/eet_connection.c b/legacy/eet/src/lib/eet_connection.c index 4f141c16f3..fa4b868a87 100644 --- a/legacy/eet/src/lib/eet_connection.c +++ b/legacy/eet/src/lib/eet_connection.c @@ -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 */