diff --git a/Lib/distutils/archive_util.py b/Lib/distutils/archive_util.py
index a568854..16164c7 100644
--- a/Lib/distutils/archive_util.py
+++ b/Lib/distutils/archive_util.py
@@ -171,10 +171,11 @@
     func = format_info[0]
     for arg, val in format_info[1]:
         kwargs[arg] = val
-    filename = func(base_name, base_dir, **kwargs)
-
-    if root_dir is not None:
-        log.debug("changing back to '%s'", save_cwd)
-        os.chdir(save_cwd)
+    try:
+        filename = func(base_name, base_dir, **kwargs)
+    finally:
+        if root_dir is not None:
+            log.debug("changing back to '%s'", save_cwd)
+            os.chdir(save_cwd)
 
     return filename
diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
index d88e0b3..c6e08cb 100644
--- a/Lib/distutils/tests/test_archive_util.py
+++ b/Lib/distutils/tests/test_archive_util.py
@@ -8,7 +8,8 @@
 import warnings
 
 from distutils.archive_util import (check_archive_formats, make_tarball,
-                                    make_zipfile, make_archive)
+                                    make_zipfile, make_archive,
+                                    ARCHIVE_FORMATS)
 from distutils.spawn import find_executable, spawn
 from distutils.tests import support
 from test.support import check_warnings
@@ -192,6 +193,20 @@
         base_name = os.path.join(tmpdir, 'archive')
         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
 
+    def test_make_archive_cwd(self):
+        current_dir = os.getcwd()
+        def _breaks(*args, **kw):
+            raise RuntimeError()
+        ARCHIVE_FORMATS['xxx'] = (_breaks, [], 'xxx file')
+        try:
+            try:
+                make_archive('xxx', 'xxx', root_dir=self.mkdtemp())
+            except:
+                pass
+            self.assertEquals(os.getcwd(), current_dir)
+        finally:
+            del ARCHIVE_FORMATS['xxx']
+
 def test_suite():
     return unittest.makeSuite(ArchiveUtilTestCase)
 
