[libxml2] fixed a 64bit big endian issue



commit 996449273fd4a8fc656d42088779e236d456e47a
Author: Marcus Meissner <meissner suse de>
Date:   Mon May 7 18:41:42 2012 +0800

    fixed a 64bit big endian issue
    
    For https://bugzilla.gnome.org/show_bug.cgi?id=671176
    patch fixes a 64bit endian issue, making libxml2 work (again) on ppc64
    unsigned int and size_t are differently sized on 64bit.

 xzlib.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/xzlib.c b/xzlib.c
index f9f16fc..f1f50e5 100644
--- a/xzlib.c
+++ b/xzlib.c
@@ -229,9 +229,14 @@ xz_avail(xz_statep state)
     if (state->err != LZMA_OK)
         return -1;
     if (state->eof == 0) {
-        if (xz_load(state, state->in, state->size,
-                    (unsigned int *) &(strm->avail_in)) == -1)
+        /* avail_in is size_t, which is not necessary sizeof(unsigned) */
+        unsigned tmp = strm->avail_in;
+
+        if (xz_load(state, state->in, state->size, &tmp) == -1) {
+            strm->avail_in = tmp;
             return -1;
+        }
+        strm->avail_in = tmp;
         strm->next_in = state->in;
     }
     return 0;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]