aboutsummaryrefslogtreecommitdiff
path: root/x11-toolkits/pango/files/patch-64bit_safe
blob: 54c00ddc82eab28e177e632c00355fe4002eb757 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From 952847a6e2d53b33cea39d13255fd0f7c8075942 Mon Sep 17 00:00:00 2001
From: Behdad Esfahbod <behdad@behdad.org>
Date: Tue, 23 Feb 2010 21:44:55 +0000
Subject: Make blob unlocking 64bit-safe

Bug 604128 - Applications crash when displaying Hebrew characters
---
diff --git a/pango/opentype/hb-blob.c b/pango/opentype/hb-blob.c
index 107cd43..3348a38 100644
--- pango.orig/opentype/hb-blob.c
+++ pango/opentype/hb-blob.c
@@ -243,18 +243,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
@@ -265,8 +265,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__,
--
cgit v0.8.3.1