diff -purN a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt	2016-04-04 18:14:05.000000000 +0100
+++ b/CMakeLists.txt	2017-02-13 22:59:10.000000000 +0000
@@ -16,7 +16,7 @@ else ()
 endif ()
 
 if (NOT WIN32)
-    set(CMAKE_CXX_FLAGS "-std=c++98 -Wall -Wextra -pedantic")
+    set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -pedantic ${CMAKE_CXX_FLAGS}")
 endif ()
 
 if(MSVC)
diff -purN a/Makefile b/Makefile
--- a/Makefile	2016-04-04 18:14:05.000000000 +0100
+++ b/Makefile	2017-02-13 22:59:10.000000000 +0000
@@ -17,6 +17,10 @@ ifdef PRMAN_15_COMPATIBLE_PTEX
     CMAKE_FLAGS += -DPRMAN_15_COMPATIBLE_PTEX:BOOL=TRUE
 endif
 
+ifdef TOOLCHAIN
+    CMAKE_FLAGS += -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN)
+endif
+
 # make V=1 shortcut for VERBOSE=1
 ifdef V
     VERBOSE=1
diff -purN a/src/ptex/PtexHashMap.h b/src/ptex/PtexHashMap.h
--- a/src/ptex/PtexHashMap.h	2016-04-04 18:14:05.000000000 +0100
+++ b/src/ptex/PtexHashMap.h	2017-02-13 22:59:10.000000000 +0000
@@ -284,14 +284,11 @@ private:
 
     Entry* lockEntriesAndGrowIfNeeded(size_t& newMemUsed)
     {
-        while (_size*2 >= _numEntries) {
-            Entry* entries = lockEntries();
-            if (_size*2 >= _numEntries) {
-                entries = grow(entries, newMemUsed);
-            }
-            return entries;
+        Entry* entries = lockEntries();
+        if (_size*2 >= _numEntries) {
+            entries = grow(entries, newMemUsed);
         }
-        return lockEntries();
+        return entries;
     }
 
     Entry* grow(Entry* oldEntries, size_t& newMemUsed)
diff -purN a/src/ptex/PtexIO.h b/src/ptex/PtexIO.h
--- a/src/ptex/PtexIO.h	2016-04-04 18:14:05.000000000 +0100
+++ b/src/ptex/PtexIO.h	2017-02-13 22:59:10.000000000 +0000
@@ -40,6 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
 PTEX_NAMESPACE_BEGIN
 
+#pragma pack(push, 1)
 struct Header {
     uint32_t magic;
     uint32_t version;
@@ -98,6 +99,7 @@ struct EditMetaDataHeader {
     uint32_t metadatazipsize;
     uint32_t metadatamemsize;
 };
+#pragma pack(pop)
 
 const uint32_t Magic = 'P' | ('t'<<8) | ('e'<<16) | ('x'<<24);
 const int HeaderSize = sizeof(Header);
diff -purN a/.workonrc.products b/.workonrc.products
--- a/.workonrc.products	1970-01-01 01:00:00.000000000 +0100
+++ b/.workonrc.products	2017-02-13 22:59:10.000000000 +0000
@@ -0,0 +1 @@
+Ptex
