[Python-checkins] r82678 - python/branches/import_unicode/Python/import.c

victor.stinner python-checkins at python.org
Fri Jul 9 01:32:31 CEST 2010


Author: victor.stinner
Date: Fri Jul  9 01:32:31 2010
New Revision: 82678

Log:
simplify load_source()

Modified:
   python/branches/import_unicode/Python/import.c

Modified: python/branches/import_unicode/Python/import.c
==============================================================================
--- python/branches/import_unicode/Python/import.c	(original)
+++ python/branches/import_unicode/Python/import.c	Fri Jul  9 01:32:31 2010
@@ -2094,7 +2094,7 @@
     int err;
     PyObject *m;
     PyObject *modules;
-    
+
     if (pathname != NULL && pathname[0] != '\0')
         name = pathname;
     if (type == C_BUILTIN)
@@ -2133,6 +2133,7 @@
 load_module(char *name, FILE *fp, char *pathname, int type, PyObject *loader)
 {
     PyObject *m;
+    PyObject *pathobj;
 
     /* First check that there's an open file (if we need one)  */
     switch (type) {
@@ -2146,45 +2147,29 @@
         }
     }
 
+    pathobj = PyUnicode_DecodeFSDefault(pathname);
+    if (pathobj == NULL)
+        return NULL;
+
     switch (type) {
 
-    case PY_SOURCE: {
-        PyObject *pathobj = PyUnicode_DecodeFSDefault(pathname);
-        if (pathobj == NULL)
-            return NULL;
+    case PY_SOURCE:
         m = load_source_module(name, pathobj, fp);
-        Py_DECREF(pathobj);
         break;
-    }
 
-    case PY_COMPILED: {
-        PyObject *pathobj = PyUnicode_DecodeFSDefault(pathname);
-        if (pathobj == NULL)
-            return NULL;
+    case PY_COMPILED:
         m = load_compiled_module(name, pathobj, fp);
-        Py_DECREF(pathobj);
         break;
-    }
 
 #ifdef HAVE_DYNAMIC_LOADING
-    case C_EXTENSION: {
-        PyObject *pathobj = PyUnicode_DecodeFSDefault(pathname);
-        if (pathobj == NULL)
-            return NULL;
+    case C_EXTENSION:
         m = _PyImport_LoadDynamicModule(name, pathobj, fp);
-        Py_DECREF(pathobj);
         break;
-    }
 #endif
 
-    case PKG_DIRECTORY: {
-        PyObject *pathobj = PyUnicode_DecodeFSDefault(pathname);
-        if (pathobj == NULL)
-            return NULL;
+    case PKG_DIRECTORY:
         m = load_package(name, pathobj);
-        Py_DECREF(pathobj);
         break;
-    }
 
     case C_BUILTIN:
     case PY_FROZEN:
@@ -2195,6 +2180,7 @@
         if (loader == NULL) {
             PyErr_SetString(PyExc_ImportError,
                             "import hook without loader");
+            Py_DECREF(pathobj);
             return NULL;
         }
         m = PyObject_CallMethod(loader, "load_module", "s", name);
@@ -2208,6 +2194,7 @@
         m = NULL;
 
     }
+    Py_DECREF(pathobj);
 
     return m;
 }


More information about the Python-checkins mailing list