[pango] Bug 591511 – hb-blob.c does not compile using mingw on windows



commit 7380a171e933b8690146d2976caf0c5abafbed91
Author: Behdad Esfahbod <behdad behdad org>
Date:   Wed Aug 12 19:36:29 2009 -0400

    Bug 591511 â?? hb-blob.c does not compile using mingw on windows
    
    Only call mprotect() when available.  For optimal performance, a win32
    way to make memory writeable needs to be added.

 configure.in             |    3 ++-
 pango/opentype/hb-blob.c |    8 ++++++++
 2 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/configure.in b/configure.in
index 1ba72c8..fb4a7ab 100644
--- a/configure.in
+++ b/configure.in
@@ -602,7 +602,8 @@ AM_CONDITIONAL(DYNAMIC_TIBETAN_FC,	echo $dynamic_modules | egrep '(^|,)tibetan-f
 # We use flockfile to implement pango_getline() - should be moved to GLib
 # strtok_r isn't present on some systems
 #
-AC_CHECK_FUNCS(flockfile strtok_r)
+# mprotect is for HarfBuzz
+AC_CHECK_FUNCS(flockfile strtok_r mprotect)
 
 dnl **************************
 dnl *** Checks for gtk-doc ***
diff --git a/pango/opentype/hb-blob.c b/pango/opentype/hb-blob.c
index 6939049..178bc8e 100644
--- a/pango/opentype/hb-blob.c
+++ b/pango/opentype/hb-blob.c
@@ -28,8 +28,12 @@
 
 #include "hb-blob.h"
 
+#ifdef HAVE_MPROTECT
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif /* HAVE_UNISTD_H */
 #include <sys/mman.h>
+#endif /* HAVE_MPROTECT */
 
 struct _hb_blob_t {
   hb_reference_count_t ref_count;
@@ -240,6 +244,7 @@ hb_blob_try_writeable_inplace (hb_blob_t *blob)
 
   hb_mutex_lock (blob->lock);
 
+#ifdef HAVE_MPROTECT
   if (blob->mode == HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITEABLE) {
     unsigned int pagesize, mask, length;
     const char *addr;
@@ -281,6 +286,9 @@ hb_blob_try_writeable_inplace (hb_blob_t *blob)
 	     addr, addr+length, length);
 #endif
   }
+#else /* !HAVE_MPROTECT */
+#warning "No way to make readonly memory writeable.  This is suboptimal."
+#endif
 
 done:
   mode = blob->mode;



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