commit c5174b35c59ee80ed8e81989ddeb73baabbfe9ed
Author: Koji Ishii <kojiishi@gmail.com>
Date:   Sat Jul 7 23:45:23 2012 +0900

    msvc10 fixes

diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh
index 918852d..967b6c0 100644
--- a/src/hb-atomic-private.hh
+++ b/src/hb-atomic-private.hh
@@ -45,7 +45,15 @@
 #elif !defined(HB_NO_MT) && defined(_MSC_VER) && _MSC_VER >= 1600
 
 #include <intrin.h>
+#if defined(_M_IX86)
+#define _InterlockedCompareExchangePointer(_Target, _Exchange, _Comparand) reinterpret_cast<void *>(static_cast<__w64 long>(_InterlockedCompareExchange( \
+    static_cast<long volatile *>(reinterpret_cast<__w64 long volatile *>(static_cast<void * volatile *>(_Target))), \
+    static_cast<long>(reinterpret_cast<__w64 long>(static_cast<void *>(_Exchange))), \
+    static_cast<long>(reinterpret_cast<__w64 long>(static_cast<void *>(_Comparand))))))
+#pragma intrinsic(_InterlockedExchangeAdd)
+#else
 #pragma intrinsic(_InterlockedExchangeAdd, _InterlockedCompareExchangePointer)
+#endif
 
 typedef long hb_atomic_int_t;
 #define hb_atomic_int_add(AI, V)	_InterlockedExchangeAdd (&(AI), (V))
diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh
index eaf151a..c781035 100644
--- a/src/hb-unicode-private.hh
+++ b/src/hb-unicode-private.hh
@@ -99,6 +99,7 @@ extern HB_INTERNAL const hb_unicode_funcs_t _hb_icu_unicode_funcs;
 #define _hb_unicode_funcs_default _hb_icu_unicode_funcs
 #else
 #define HB_UNICODE_FUNCS_NIL 1
+extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil;
 #define _hb_unicode_funcs_default _hb_unicode_funcs_nil
 #endif
 
diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index b71b00a..3bedc7d 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -29,6 +29,10 @@
 #include "hb-private.hh"
 
 #include <windows.h>
+// usp10.h defines UNISCRIBE_OPENTYPE only if _WIN32_WINNT >= 0x0600
+#if !defined(UNISCRIBE_OPENTYPE) && (_WIN32_WINNT < 0x0600)
+#define UNISCRIBE_OPENTYPE 0x0100
+#endif
 #include <usp10.h>
 
 typedef ULONG WIN_ULONG;
