Bug 591511 – hb-blob.c does not compile using mingw on windows
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 12 Aug 2009 23:36:29 +0000 (19:36 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:42 +0000 (14:40 -0500)
Only call mprotect() when available.  For optimal performance, a win32
way to make memory writeable needs to be added.

src/hb-blob.c

index 6939049..178bc8e 100644 (file)
 
 #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;