efl: fix endianness issue.

Patch by Albin Tonnerre <albin.tonnerre@gmail.com>.


SVN revision: 82743
This commit is contained in:
Cedric BAIL 2013-01-14 03:54:47 +00:00
parent c7aead6fdc
commit 55bc6a16fb
4 changed files with 28 additions and 5 deletions

View File

@ -1,3 +1,7 @@
2013-01-14 Albin Tonerre
* Fix endianess issue in Eet_Image.
2013-01-13 Boris Faure (billiob)
* Fixed condition based on uninitialized value in ecore_x_selection

1
NEWS
View File

@ -109,3 +109,4 @@ Fixes:
* Fix evas bmp loader code which deal with image size.
* Fix not up to date clip cache for Evas_Object_Text.
* Evas texblock: Fixed a bug with breaking after format items.
* Fix endianess issue in Eet_Image.

View File

@ -655,9 +655,13 @@ eet_identity_check(const void *data_base,
return NULL;
/* Get the header */
magic = ntohl(header[0]);
sign_len = ntohl(header[1]);
cert_len = ntohl(header[2]);
memcpy(&magic, header, sizeof(int));
memcpy(&sign_len, header+1, sizeof(int));
memcpy(&cert_len, header+2, sizeof(int));
magic = ntohl(magic);
sign_len = ntohl(sign_len);
cert_len = ntohl(cert_len);
/* Verify the header */
if (magic != EET_MAGIC_SIGN)

View File

@ -727,13 +727,26 @@ eet_data_image_lossless_compressed_convert(int *size,
{
unsigned char *d, *comp;
int *header, ret, ok = 1;
int *header, *bigend_data, ret, ok = 1;
uLongf buflen = 0;
buflen = (((w * h * 101) / 100) + 3) * 4;
ret = LZ4_compressBound((w * h * 4));
if ((ret > 0) && ((uLongf)ret > buflen)) buflen = ret;
if (_eet_image_words_bigendian)
{
int i;
bigend_data = (int *) malloc(w * h * 4);
if (!bigend_data) return NULL;
memcpy(bigend_data, data, w * h * 4);
for (i = 0; i < w * h; i++) SWAP32(bigend_data[i]);
data = (const char *) bigend_data;
}
comp = malloc(buflen);
if (!comp) return NULL;
@ -784,6 +797,7 @@ eet_data_image_lossless_compressed_convert(int *size,
unsigned int i;
for (i = 0; i < 8; i++) SWAP32(header[i]);
free(bigend_data);
}
memcpy(d + (8 * sizeof(int)), comp, buflen);