diff --git a/Source/cmWin32ProcessExecution.cxx b/Source/cmWin32ProcessExecution.cxx
index 67ceaef0bfd5020b2f555ea9f1e87a0c647390a5..f3838057c5c9257c2b4da3697624c40e5d169007 100644
--- a/Source/cmWin32ProcessExecution.cxx
+++ b/Source/cmWin32ProcessExecution.cxx
@@ -715,18 +715,24 @@ bool cmWin32ProcessExecution::CloseHandles()
 {
   if(this->pStdErr != -1 )
     {
+    // this will close this as well: this->hChildStderrRdDup
     _close(this->pStdErr);
     this->pStdErr = -1;
+    this->hChildStderrRdDup = 0;
     }
   if(this->pStdIn != -1 )
     {
+    // this will close this as well: this->hChildStdinWrDup
     _close(this->pStdIn);
     this->pStdIn = -1;
+    this->hChildStdinWrDup = 0;
     }
   if(this->pStdOut != -1 )
     {
+    // this will close this as well: this->hChildStdoutRdDup
     _close(this->pStdOut);
     this->pStdOut = -1;
+    this->hChildStdoutRdDup = 0;
     }
 
   bool ret = true;
@@ -735,21 +741,7 @@ bool cmWin32ProcessExecution::CloseHandles()
     ret = false;
     }
   this->hChildStdinRd = 0;
-  if(this->hChildStdoutRdDup && !CloseHandle(this->hChildStdoutRdDup))
-    {
-    ret = false;
-    }
-  this->hChildStdoutRdDup = 0;
-  if(this->hChildStderrRdDup && !CloseHandle(this->hChildStderrRdDup))
-    {
-    ret = false;
-    }
-  this->hChildStderrRdDup = 0;
-  if(this->hChildStdinWrDup && !CloseHandle(this->hChildStdinWrDup))
-    {
-    ret = false;
-    }
-  this->hChildStdinWrDup = 0;
+  // now close these two
   if (this->hChildStdoutWr && !CloseHandle(this->hChildStdoutWr))
     {
     ret = false;