# From http://bugs.ruby-lang.org/issues/5108
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index c9e738a..7a8004d 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -201,20 +201,26 @@ end
 module Logging
   @log = nil
   @logfile = 'mkmf.log'
-  @orgerr = $stderr.dup
-  @orgout = $stdout.dup
   @postpone = 0
   @quiet = $extmk
 
   def self::open
     @log ||= File::open(@logfile, 'w')
     @log.sync = true
+    orgerr = $stderr.dup
+    orgout = $stdout.dup
     $stderr.reopen(@log)
     $stdout.reopen(@log)
     yield
   ensure
-    $stderr.reopen(@orgerr)
-    $stdout.reopen(@orgout)
+    if orgerr
+      $stderr.reopen(orgerr)
+      orgerr.close
+    end
+    if orgout
+      $stdout.reopen(orgout)
+      orgout.close
+    end
   end
 
   def self::message(*s)
