]> granicus.if.org Git - python/commitdiff
Avoid using items() in environ.update(). Fixes #1124513.
authorMartin v. Löwis <martin@v.loewis.de>
Thu, 17 Feb 2005 21:23:20 +0000 (21:23 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Thu, 17 Feb 2005 21:23:20 +0000 (21:23 +0000)
Will backport to 2.4.

Lib/os.py
Lib/test/test_os.py

index b967978600df28155dd760f79939576e306420e8..5824609b14daaa441264651ec5f0165e8b913f0d 100644 (file)
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -445,12 +445,17 @@ else:
             def update(self, dict=None, **kwargs):
                 if dict:
                     try:
-                        items = dict.items()
+                        keys = dict.keys()
                     except AttributeError:
                         # List of (key, value)
-                        items = dict
-                    for k, v in items:
-                        self[k] = v
+                        for k, v in dict:
+                            self[k] = v
+                    else:
+                        # got keys
+                        # cannot use items(), since mappings
+                        # may not have them.
+                        for k in keys:
+                            self[k] = dict[k]
                 if kwargs:
                     self.update(kwargs)
             def copy(self):
@@ -467,12 +472,17 @@ else:
             def update(self,  dict=None, **kwargs):
                 if dict:
                     try:
-                        items = dict.items()
+                        keys = dict.keys()
                     except AttributeError:
                         # List of (key, value)
-                        items = dict
-                    for k, v in items:
-                        self[k] = v
+                        for k, v in dict:
+                            self[k] = v
+                    else:
+                        # got keys
+                        # cannot use items(), since mappings
+                        # may not have them.
+                        for k in keys:
+                            self[k] = dict[k]
                 if kwargs:
                     self.update(kwargs)
             try:
index cce692636f27073b5ed0641d7479c62889291e27..2bc5fc0ab7bfee4b96e9a236d65c8fbeff7b72e7 100644 (file)
@@ -227,7 +227,7 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
         os.environ.update(self.__save)
 
     # Bug 1110478
-    def test_update(self):
+    def test_update2(self):
         if os.path.exists("/bin/sh"):
             os.environ.update(HELLO="World")
             value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip()