diff --git a/lib/System/Win32/Program.inc b/lib/System/Win32/Program.inc
index af6cce6..a69826f 100644
--- a/lib/System/Win32/Program.inc
+++ b/lib/System/Win32/Program.inc
@@ -22,6 +22,13 @@
 //===          and must not be UNIX code
 //===----------------------------------------------------------------------===//
 
+namespace {
+  struct Win32ProcessInfo {
+    HANDLE hProcess;
+    DWORD  dwProcessId;
+  };
+}
+
 namespace llvm {
 using namespace sys;
 
@@ -29,15 +36,16 @@
 
 Program::~Program() {
   if (Data_) {
-    HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
-    CloseHandle(hProcess);
+    Win32ProcessInfo* wpi = reinterpret_cast<Win32ProcessInfo*>(Data_);
+    CloseHandle(wpi->hProcess);
+    delete wpi;
     Data_ = 0;
   }
 }
 
 unsigned Program::GetPid() const {
-  HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
-  return GetProcessId(hProcess);
+  Win32ProcessInfo* wpi = reinterpret_cast<Win32ProcessInfo*>(Data_);
+  return wpi->dwProcessId;
 }
 
 // This function just uses the PATH environment variable to find the program.
@@ -138,8 +146,9 @@
                  unsigned memoryLimit,
                  std::string* ErrMsg) {
   if (Data_) {
-    HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
-    CloseHandle(Data_);
+    Win32ProcessInfo* wpi = reinterpret_cast<Win32ProcessInfo*>(Data_);
+    CloseHandle(wpi->hProcess);
+    delete wpi;
     Data_ = 0;
   }
 
@@ -269,7 +278,10 @@
                path.str() + "'");
     return false;
   }
-  Data_ = reinterpret_cast<void*>(pi.hProcess);
+  Win32ProcessInfo* wpi = new Win32ProcessInfo;
+  wpi->hProcess = pi.hProcess;
+  wpi->dwProcessId = pi.dwProcessId;
+  Data_ = wpi;
 
   // Make sure these get closed no matter what.
   AutoHandle hThread(pi.hThread);
@@ -310,7 +322,8 @@
     return -1;
   }
 
-  HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
+  Win32ProcessInfo* wpi = reinterpret_cast<Win32ProcessInfo*>(Data_);
+  HANDLE hProcess = wpi->hProcess;
 
   // Wait for the process to terminate.
   DWORD millisecondsToWait = INFINITE;
@@ -346,7 +359,8 @@
     return true;
   }
 
-  HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
+  Win32ProcessInfo* wpi = reinterpret_cast<Win32ProcessInfo*>(Data_);
+  HANDLE hProcess = wpi->hProcess;
   if (TerminateProcess(hProcess, 1) == 0) {
     MakeErrMsg(ErrMsg, "The process couldn't be killed!");
     return true;
