From 917c227500305aee543981ad24a39f868c5ca0b7 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 23 Feb 2010 16:47:51 -0500 Subject: [PATCH] Make blob unlocking 64bit-safe GNOME Bug 604128 - Applications crash when displaying Hebrew characters --- src/hb-blob.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/hb-blob.c b/src/hb-blob.c index 6058e96..b4eccb6 100644 --- a/src/hb-blob.c +++ b/src/hb-blob.c @@ -250,18 +250,18 @@ static hb_bool_t _try_make_writable_inplace_unix_locked (hb_blob_t *blob) { #if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MPROTECT) - unsigned int pagesize = -1, mask, length; + uintptr_t pagesize = -1, mask, length; const char *addr; #if defined(HAVE_SYSCONF) && defined(_SC_PAGE_SIZE) - pagesize = (unsigned int) sysconf (_SC_PAGE_SIZE); + pagesize = (uintptr_t) sysconf (_SC_PAGE_SIZE); #elif defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE) - pagesize = (unsigned int) sysconf (_SC_PAGESIZE); + pagesize = (uintptr_t) sysconf (_SC_PAGESIZE); #elif defined(HAVE_GETPAGESIZE) - pagesize = (unsigned int) getpagesize (); + pagesize = (uintptr_t) getpagesize (); #endif - if ((unsigned int) -1 == pagesize) { + if ((uintptr_t) -1L == pagesize) { #if HB_DEBUG_BLOB fprintf (stderr, "%p %s: failed to get pagesize: %s\n", blob, __FUNCTION__, strerror (errno)); #endif @@ -272,8 +272,8 @@ _try_make_writable_inplace_unix_locked (hb_blob_t *blob) #endif mask = ~(pagesize-1); - addr = (const char *) (((size_t) blob->data) & mask); - length = (const char *) (((size_t) blob->data + blob->length + pagesize-1) & mask) - addr; + addr = (const char *) (((uintptr_t) blob->data) & mask); + length = (const char *) (((uintptr_t) blob->data + blob->length + pagesize-1) & mask) - addr; #if HB_DEBUG_BLOB fprintf (stderr, "%p %s: calling mprotect on [%p..%p] (%d bytes)\n", blob, __FUNCTION__, -- 2.7.4