From d6ac380d394771a8c72e42a8c1443b2151718d62 Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Fri, 7 Jul 1995 23:01:27 +0000
Subject: fix bug in example (should close file at all times)

---
 Doc/lib/libimp.tex | 23 +++++++++++++----------
 Doc/libimp.tex     | 23 +++++++++++++----------
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/Doc/lib/libimp.tex b/Doc/lib/libimp.tex
index 2e72602..4456814 100644
--- a/Doc/lib/libimp.tex
+++ b/Doc/lib/libimp.tex
@@ -158,14 +158,17 @@ def __import__(name, globals=None, locals=None, fromlist=None):
     fp, pathname, (suffix, mode, type) = imp.find_module(name)
 
     # See what we got.
-    # Note that fp will be closed automatically when we return.
-    if type == imp.C_EXTENSION:
-        return imp.load_dynamic(name, pathname)
-    if type == imp.PY_SOURCE:
-        return imp.load_source(name, pathname, fp)
-    if type == imp.PY_COMPILED:
-        return imp.load_compiled(name, pathname, fp)
-
-    # Shouldn't get here at all.
-    raise ImportError, '%s: unknown module type (%d)' % (name, type)
+    try:
+        if type == imp.C_EXTENSION:
+            return imp.load_dynamic(name, pathname)
+        if type == imp.PY_SOURCE:
+            return imp.load_source(name, pathname, fp)
+        if type == imp.PY_COMPILED:
+            return imp.load_compiled(name, pathname, fp)
+
+        # Shouldn't get here at all.
+        raise ImportError, '%s: unknown module type (%d)' % (name, type)
+    finally:
+        # Since we may exit via an exception, close fp explicitly.
+        fp.close()
 \end{verbatim}
diff --git a/Doc/libimp.tex b/Doc/libimp.tex
index 2e72602..4456814 100644
--- a/Doc/libimp.tex
+++ b/Doc/libimp.tex
@@ -158,14 +158,17 @@ def __import__(name, globals=None, locals=None, fromlist=None):
     fp, pathname, (suffix, mode, type) = imp.find_module(name)
 
     # See what we got.
-    # Note that fp will be closed automatically when we return.
-    if type == imp.C_EXTENSION:
-        return imp.load_dynamic(name, pathname)
-    if type == imp.PY_SOURCE:
-        return imp.load_source(name, pathname, fp)
-    if type == imp.PY_COMPILED:
-        return imp.load_compiled(name, pathname, fp)
-
-    # Shouldn't get here at all.
-    raise ImportError, '%s: unknown module type (%d)' % (name, type)
+    try:
+        if type == imp.C_EXTENSION:
+            return imp.load_dynamic(name, pathname)
+        if type == imp.PY_SOURCE:
+            return imp.load_source(name, pathname, fp)
+        if type == imp.PY_COMPILED:
+            return imp.load_compiled(name, pathname, fp)
+
+        # Shouldn't get here at all.
+        raise ImportError, '%s: unknown module type (%d)' % (name, type)
+    finally:
+        # Since we may exit via an exception, close fp explicitly.
+        fp.close()
 \end{verbatim}
-- 
cgit v0.12

