diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 5186a57..73b6fa2 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -454,30 +454,32 @@
     a context manager."""
 
     def __init__(self):
-        self._environ = os.environ
-        self._unset = set()
-        self._reset = dict()
+        self._changed = {}
 
     def set(self, envvar, value):
-        if envvar not in self._environ:
-            self._unset.add(envvar)
-        else:
-            self._reset[envvar] = self._environ[envvar]
-        self._environ[envvar] = value
+        # Remember the initial value on the first access
+        if envvar not in self._changed:
+            self._changed[envvar] = os.environ.get(envvar)
+        os.environ[envvar] = value
 
     def unset(self, envvar):
-        if envvar in self._environ:
-            self._reset[envvar] = self._environ[envvar]
-            del self._environ[envvar]
+        # Remember the initial value on the first access
+        if envvar not in self._changed:
+            self._changed[envvar] = os.environ.get(envvar)
+        if envvar in os.environ:
+            del os.environ[envvar]
 
     def __enter__(self):
         return self
 
     def __exit__(self, *ignore_exc):
-        for envvar, value in self._reset.iteritems():
-            self._environ[envvar] = value
-        for unset in self._unset:
-            del self._environ[unset]
+        for (k, v) in self._changed.items():
+            if v is None:
+                if k in os.environ:
+                    del os.environ[k]
+            else:
+                os.environ[k] = v
+
 
 class TransientResource(object):
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 5c074e1..fdaf081 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,13 @@
   dispatcher now has an 'ignore_log_types' attribute for suppressing
   log messages, which is set to 'warning' by default.
 
+Tests
+-----
+
+- Issue #5837: Certain sequences of calls to set() and unset() for
+  support.EnvironmentVarGuard objects restored the environment variables
+  incorrectly on __exit__.
+
 
 What's New in Python 2.6.2 rc 1
 ===============================
