| Index: third_party/re2/util/threadwin.cc | 
| diff --git a/third_party/re2/util/thread.cc b/third_party/re2/util/threadwin.cc | 
| similarity index 72% | 
| copy from third_party/re2/util/thread.cc | 
| copy to third_party/re2/util/threadwin.cc | 
| index 7349991530a57011b46b00e5591e229c3797e052..d68f2c58b3f4c0559be25da05d978528a60bb1ef 100644 | 
| --- a/third_party/re2/util/thread.cc | 
| +++ b/third_party/re2/util/threadwin.cc | 
| @@ -2,10 +2,8 @@ | 
| // Use of this source code is governed by a BSD-style | 
| // license that can be found in the LICENSE file. | 
|  | 
| -#include <pthread.h> | 
| - | 
| -#include "util/util.h" | 
| #include "util/thread.h" | 
| +#include "util/util.h" | 
|  | 
| Thread::Thread() { | 
| pid_ = 0; | 
| @@ -16,7 +14,7 @@ Thread::Thread() { | 
| Thread::~Thread() { | 
| } | 
|  | 
| -void *startThread(void *v) { | 
| +DWORD WINAPI startThread(void *v) { | 
| Thread* t = (Thread*)v; | 
| t->Run(); | 
| return 0; | 
| @@ -24,17 +22,19 @@ void *startThread(void *v) { | 
|  | 
| void Thread::Start() { | 
| CHECK(!running_); | 
| -  pthread_create(&pid_, 0, startThread, this); | 
| +  pid_ = CreateThread(NULL, 0, startThread, this, 0, NULL); | 
| running_ = true; | 
| -  if (!joinable_) | 
| -    pthread_detach(pid_); | 
| +  if (!joinable_) { | 
| +    CloseHandle(pid_); | 
| +    pid_ = 0; | 
| +  } | 
| } | 
|  | 
| void Thread::Join() { | 
| CHECK(running_); | 
| CHECK(joinable_); | 
| -  void *val; | 
| -  pthread_join(pid_, &val); | 
| +  if (pid_ != 0) | 
| +    WaitForSingleObject(pid_, INFINITE); | 
| running_ = 0; | 
| } | 
|  | 
|  |