re2-msvc9-chrome.patch revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff --git a/AUTHORS b/AUTHORS 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index 3c0f928..e17d9bf 100644 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/AUTHORS 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/AUTHORS 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -8,5 +8,6 @@ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Please keep the list sorted. 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+Brian Gunlogson <unixman83@gmail.com> 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Google Inc. 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Stefano Rivera <stefano.rivera@gmail.com> 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)diff --git a/CONTRIBUTORS b/CONTRIBUTORS 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index 7b44e04..7f6a93d 100644 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/CONTRIBUTORS 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/CONTRIBUTORS 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -26,6 +26,7 @@ 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Please keep the list sorted. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+Brian Gunlogson <unixman83@gmail.com> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Dominic Battré <battre@chromium.org> 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) John Millikin <jmillikin@gmail.com> 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Rob Pike <r@google.com> 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff --git a/re2/compile.cc b/re2/compile.cc 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index 9cddb71..adb45fd 100644 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/compile.cc 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/re2/compile.cc 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -502,7 +502,7 @@ int Compiler::RuneByteSuffix(uint8 lo, uint8 hi, bool foldcase, int next) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return UncachedRuneByteSuffix(lo, hi, foldcase, next); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- uint64 key = ((uint64)next << 17) | (lo<<9) | (hi<<1) | foldcase; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ uint64 key = ((uint64)next << 17) | (lo<<9) | (hi<<1) | (foldcase ? 1ULL : 0ULL); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) map<uint64, int>::iterator it = rune_cache_.find(key); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it != rune_cache_.end()) 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return it->second; 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)diff --git a/re2/prefilter_tree.cc b/re2/prefilter_tree.cc 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index d8bc37a..cdcf77e 100644 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/prefilter_tree.cc 40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+++ b/re2/prefilter_tree.cc 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)@@ -8,6 +8,11 @@ 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include "re2/prefilter_tree.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include "re2/re2.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#ifdef WIN32 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#include <stdio.h> 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#define snprintf _snprintf 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#endif 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DEFINE_int32(filtered_re2_min_atom_len, 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3, 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "Strings less than this length are not stored as atoms"); 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)diff --git a/re2/re2.cc b/re2/re2.cc 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index 8d1d468..0da886d 100644 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/re2.cc 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/re2/re2.cc 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -11,7 +11,13 @@ 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) #include <stdio.h> 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) #include <string> 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#ifdef WIN32 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#define strtoll _strtoi64 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#define strtoull _strtoui64 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+#define strtof strtod 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)+#else 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) #include <pthread.h> 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#endif 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include <errno.h> 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include "util/util.h" 70868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) #include "util/flags.h" 71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)@@ -31,10 +37,22 @@ const VariadicFunction2<bool, const StringPiece&, const RE2&, RE2::Arg, RE2::Par 72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::ConsumeN> RE2::Consume; 73868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const VariadicFunction2<bool, StringPiece*, const RE2&, RE2::Arg, RE2::FindAndConsumeN> RE2::FindAndConsume; 74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 75868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)-// This will trigger LNK2005 error in MSVC. 76868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)-#ifndef COMPILER_MSVC 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)-const int RE2::Options::kDefaultMaxMem; // initialized in re2.h 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)-#endif // COMPILER_MSVC 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#define kDefaultMaxMem (8<<20) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+RE2::Options::Options() 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ : encoding_(EncodingUTF8), 83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ posix_syntax_(false), 84868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ longest_match_(false), 85868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ log_errors_(true), 86868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ max_mem_(kDefaultMaxMem), 87868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ literal_(false), 88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ never_nl_(false), 89868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ never_capture_(false), 90868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ case_sensitive_(true), 91868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ perl_classes_(false), 92868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ word_boundary_(false), 93868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+ one_line_(false) { 94868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)+} 95868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 96868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RE2::Options::Options(RE2::CannedOptions opt) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : encoding_(opt == RE2::Latin1 ? EncodingLatin1 : EncodingUTF8), 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff --git a/re2/re2.h b/re2/re2.h 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)index 272028b..c509853 100644 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/re2.h 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/re2/re2.h 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -552,28 +552,16 @@ class RE2 { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If this happens too often, RE2 falls back on the NFA implementation. 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For now, make the default budget something close to Code Search. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#ifndef WIN32 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kDefaultMaxMem = 8<<20; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#endif 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum Encoding { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EncodingUTF8 = 1, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EncodingLatin1 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- Options() : 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- encoding_(EncodingUTF8), 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- posix_syntax_(false), 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- longest_match_(false), 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- log_errors_(true), 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- max_mem_(kDefaultMaxMem), 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- literal_(false), 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- never_nl_(false), 123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)- never_capture_(false), 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- case_sensitive_(true), 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- perl_classes_(false), 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- word_boundary_(false), 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)- one_line_(false) { 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)- } 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)- 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)+ Options(); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /*implicit*/ Options(CannedOptions); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Encoding encoding() const { return encoding_; } 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff --git a/re2/stringpiece.h b/re2/stringpiece.h 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index ab9297c..38a5150 100644 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/stringpiece.h 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/re2/stringpiece.h 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -23,6 +23,9 @@ 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include <cstddef> 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include <iosfwd> 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) #include <string> 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#ifdef WIN32 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#include <algorithm> 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+#endif 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) namespace re2 { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff --git a/re2/testing/re2_test.cc b/re2/testing/re2_test.cc 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)index b99cacf..911e868 100644 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- a/re2/testing/re2_test.cc 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+++ b/re2/testing/re2_test.cc 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@@ -6,7 +6,9 @@ 153 // TODO: Test extractions for PartialMatch/Consume 154 155 #include <sys/types.h> 156+#ifndef WIN32 157 #include <sys/mman.h> 158+#endif 159 #include <sys/stat.h> 160 #include <errno.h> 161 #include <vector> 162@@ -14,6 +16,11 @@ 163 #include "re2/re2.h" 164 #include "re2/regexp.h" 165 166+#ifdef WIN32 167+#include <stdio.h> 168+#define snprintf _snprintf 169+#endif 170+ 171 DECLARE_bool(logtostderr); 172 173 namespace re2 { 174@@ -657,6 +664,7 @@ TEST(RE2, FullMatchTypedNullArg) { 175 CHECK(!RE2::FullMatch("hello", "(.*)", (float*)NULL)); 176 } 177 178+#ifndef WIN32 179 // Check that numeric parsing code does not read past the end of 180 // the number being parsed. 181 TEST(RE2, NULTerminated) { 182@@ -678,6 +686,7 @@ TEST(RE2, NULTerminated) { 183 CHECK(RE2::FullMatch(StringPiece(v + pagesize - 1, 1), "(.*)", &x)); 184 CHECK_EQ(x, 1); 185 } 186+#endif 187 188 TEST(RE2, FullMatchTypeTests) { 189 // Type tests 190diff --git a/util/logging.h b/util/logging.h 191index 4443f7c..d0a2d87 100644 192--- a/util/logging.h 193+++ b/util/logging.h 194@@ -7,8 +7,13 @@ 195 #ifndef RE2_UTIL_LOGGING_H__ 196 #define RE2_UTIL_LOGGING_H__ 197 198+#ifndef WIN32 199 #include <unistd.h> /* for write */ 200+#endif 201 #include <sstream> 202+#ifdef WIN32 203+#include <io.h> 204+#endif 205 206 // Debug-only checking. 207 #define DCHECK(condition) assert(condition) 208diff --git a/util/mutex.h b/util/mutex.h 209index 9787bfb..e321fae 100644 210--- a/util/mutex.h 211+++ b/util/mutex.h 212@@ -12,8 +12,10 @@ 213 214 namespace re2 { 215 216+#ifndef WIN32 217 #define HAVE_PTHREAD 1 218 #define HAVE_RWLOCK 1 219+#endif 220 221 #if defined(NO_THREADS) 222 typedef int MutexType; // to keep a lock-count 223@@ -32,7 +34,9 @@ namespace re2 { 224 # include <pthread.h> 225 typedef pthread_mutex_t MutexType; 226 #elif defined(WIN32) 227-# define WIN32_LEAN_AND_MEAN // We only need minimal includes 228+# ifndef WIN32_LEAN_AND_MEAN 229+# define WIN32_LEAN_AND_MEAN // We only need minimal includes 230+# endif 231 # ifdef GMUTEX_TRYLOCK 232 // We need Windows NT or later for TryEnterCriticalSection(). If you 233 // don't need that functionality, you can remove these _WIN32_WINNT 234diff --git a/util/pcre.cc b/util/pcre.cc 235index 5e67e1f..1602133 100644 236--- a/util/pcre.cc 237+++ b/util/pcre.cc 238@@ -11,6 +11,11 @@ 239 #include "util/flags.h" 240 #include "util/pcre.h" 241 242+#ifdef WIN32 243+#define strtoll _strtoi64 244+#define strtoull _strtoui64 245+#endif 246+ 247 #define PCREPORT(level) LOG(level) 248 249 // Default PCRE limits. 250diff --git a/util/pcre.h b/util/pcre.h 251index 4dda95d..771ac91 100644 252--- a/util/pcre.h 253+++ b/util/pcre.h 254@@ -180,9 +180,15 @@ struct pcre_extra { int flags, match_limit, match_limit_recursion; }; 255 #define PCRE_ERROR_MATCHLIMIT 2 256 #define PCRE_ERROR_RECURSIONLIMIT 3 257 #define PCRE_INFO_CAPTURECOUNT 0 258+#ifndef WIN32 259 #define pcre_compile(a,b,c,d,e) ({ (void)(a); (void)(b); *(c)=""; *(d)=0; (void)(e); ((pcre*)0); }) 260 #define pcre_exec(a, b, c, d, e, f, g, h) ({ (void)(a); (void)(b); (void)(c); (void)(d); (void)(e); (void)(f); (void)(g); (void)(h); 0; }) 261 #define pcre_fullinfo(a, b, c, d) ({ (void)(a); (void)(b); (void)(c); *(d) = 0; 0; }) 262+#else 263+#define pcre_compile(a,b,c,d,e) NULL 264+#define pcre_exec(a, b, c, d, e, f, g, h) NULL 265+#define pcre_fullinfo(a, b, c, d) NULL 266+#endif 267 } // namespace re2 268 #endif 269 270diff --git a/util/test.cc b/util/test.cc 271index 0644829..2fe1bfa 100644 272--- a/util/test.cc 273+++ b/util/test.cc 274@@ -3,7 +3,9 @@ 275 // license that can be found in the LICENSE file. 276 277 #include <stdio.h> 278+#ifndef WIN32 279 #include <sys/resource.h> 280+#endif 281 #include "util/test.h" 282 283 DEFINE_string(test_tmpdir, "/var/tmp", "temp directory"); 284@@ -23,9 +25,13 @@ void RegisterTest(void (*fn)(void), const char *name) { 285 286 namespace re2 { 287 int64 VirtualProcessSize() { 288+#ifndef WIN32 289 struct rusage ru; 290 getrusage(RUSAGE_SELF, &ru); 291 return (int64)ru.ru_maxrss*1024; 292+#else 293+ return 0; 294+#endif 295 } 296 } // namespace re2 297 298diff --git a/util/util.h b/util/util.h 299index c46ab1b..17ef824 100644 300--- a/util/util.h 301+++ b/util/util.h 302@@ -12,7 +12,9 @@ 303 #include <stddef.h> // For size_t 304 #include <assert.h> 305 #include <stdarg.h> 306+#ifndef WIN32 307 #include <sys/time.h> 308+#endif 309 #include <time.h> 310 #include <ctype.h> // For isdigit, isalpha. 311 312@@ -51,7 +53,11 @@ using std::tr1::unordered_set; 313 #else 314 315 #include <unordered_set> 316+#ifdef WIN32 317+using std::tr1::unordered_set; 318+#else 319 using std::unordered_set; 320+#endif 321 322 #endif 323 324diff --git a/util/valgrind.h b/util/valgrind.h 325index ca10b1a..d097b0c 100644 326--- a/util/valgrind.h 327+++ b/util/valgrind.h 328@@ -4064,6 +4064,7 @@ typedef 329 #endif /* PLAT_ppc64_aix5 */ 330 331 332+#ifndef WIN32 333 /* ------------------------------------------------------------------ */ 334 /* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ 335 /* */ 336@@ -4170,7 +4171,7 @@ typedef 337 VG_USERREQ__DISCARD_TRANSLATIONS, \ 338 _qzz_addr, _qzz_len, 0, 0, 0); \ 339 } 340- 341+#endif 342 343 /* These requests are for getting Valgrind itself to print something. 344 Possibly with a backtrace. This is a really ugly hack. The return value 345