[Python-checkins] cpython: Issue #3080: Reindent and simplify import_submodule()

victor.stinner python-checkins at python.org
Sun Mar 20 04:13:53 CET 2011


http://hg.python.org/cpython/rev/2ee0ab9d2e8a
changeset:   68727:2ee0ab9d2e8a
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Sun Mar 13 22:38:38 2011 -0400
summary:
  Issue #3080: Reindent and simplify import_submodule()

files:
  Python/import.c

diff --git a/Python/import.c b/Python/import.c
--- a/Python/import.c
+++ b/Python/import.c
@@ -2779,9 +2779,7 @@
    corresponding entry is not found in sys.modules, Py_None is returned.
 */
 static PyObject *
-get_parent(PyObject *globals,
-           PyObject **p_name,
-           int level)
+get_parent(PyObject *globals, PyObject **p_name, int level)
 {
     Py_UNICODE name[MAXPATHLEN+1];
     const Py_ssize_t bufsize = MAXPATHLEN+1;
@@ -3167,7 +3165,10 @@
 import_submodule(PyObject *mod, PyObject *subname, PyObject *fullname)
 {
     PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m = NULL, *bufobj;
+    PyObject *m = NULL, *bufobj, *path, *loader;
+    char buf[MAXPATHLEN+1];
+    struct filedescr *fdp;
+    FILE *fp;
 
     /* Require:
        if mod == None: subname == fullname
@@ -3176,52 +3177,48 @@
 
     if ((m = PyDict_GetItem(modules, fullname)) != NULL) {
         Py_INCREF(m);
+        return m;
     }
+
+    if (mod == Py_None)
+        path = NULL;
     else {
-        PyObject *path, *loader;
-        char buf[MAXPATHLEN+1];
-        struct filedescr *fdp;
-        FILE *fp;
-
-        if (mod == Py_None)
-            path = NULL;
-        else {
-            path = PyObject_GetAttrString(mod, "__path__");
-            if (path == NULL) {
-                PyErr_Clear();
-                Py_INCREF(Py_None);
-                return Py_None;
-            }
-        }
-
-        fdp = find_module(_PyUnicode_AsString(fullname),
-                          _PyUnicode_AsString(subname),
-                          path, buf, MAXPATHLEN+1,
-                          &fp, &loader);
-        Py_XDECREF(path);
-        if (fdp == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_ImportError))
-                return NULL;
+        path = PyObject_GetAttrString(mod, "__path__");
+        if (path == NULL) {
             PyErr_Clear();
             Py_INCREF(Py_None);
             return Py_None;
         }
-        bufobj = PyUnicode_DecodeFSDefault(buf);
-        if (bufobj != NULL) {
-            m = load_module(fullname, fp, bufobj, fdp->type, loader);
-            Py_DECREF(bufobj);
-        }
-        else
-            m = NULL;
-        Py_XDECREF(loader);
-        if (fp)
-            fclose(fp);
-        if (m != NULL && !add_submodule(mod, m, fullname, subname, modules)) {
-            Py_XDECREF(m);
-            m = NULL;
-        }
     }
 
+    fdp = find_module(_PyUnicode_AsString(fullname),
+                      _PyUnicode_AsString(subname),
+                      path, buf, MAXPATHLEN+1,
+                      &fp, &loader);
+    Py_XDECREF(path);
+    if (fdp == NULL) {
+        if (!PyErr_ExceptionMatches(PyExc_ImportError))
+            return NULL;
+        PyErr_Clear();
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    bufobj = PyUnicode_DecodeFSDefault(buf);
+    if (bufobj != NULL) {
+        m = load_module(fullname, fp, bufobj, fdp->type, loader);
+        Py_DECREF(bufobj);
+    }
+    else
+        m = NULL;
+    Py_XDECREF(loader);
+    if (fp)
+        fclose(fp);
+    if (m == NULL)
+        return NULL;
+    if (!add_submodule(mod, m, fullname, subname, modules)) {
+        Py_XDECREF(m);
+        return NULL;
+    }
     return m;
 }
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list