Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Python/importdl.c

    r2 r391  
    1414
    1515extern dl_funcptr _PyImport_GetDynLoadFunc(const char *name,
    16                                            const char *shortname,
    17                                            const char *pathname, FILE *fp);
     16                                           const char *shortname,
     17                                           const char *pathname, FILE *fp);
    1818
    1919
     
    2222_PyImport_LoadDynamicModule(char *name, char *pathname, FILE *fp)
    2323{
    24         PyObject *m;
    25         char *lastdot, *shortname, *packagecontext, *oldcontext;
    26         dl_funcptr p;
     24    PyObject *m;
     25    char *lastdot, *shortname, *packagecontext, *oldcontext;
     26    dl_funcptr p;
    2727
    28         if ((m = _PyImport_FindExtension(name, pathname)) != NULL) {
    29                 Py_INCREF(m);
    30                 return m;
    31         }
    32         lastdot = strrchr(name, '.');
    33         if (lastdot == NULL) {
    34                 packagecontext = NULL;
    35                 shortname = name;
    36         }
    37         else {
    38                 packagecontext = name;
    39                 shortname = lastdot+1;
    40         }
     28    if ((m = _PyImport_FindExtension(name, pathname)) != NULL) {
     29        Py_INCREF(m);
     30        return m;
     31    }
     32    lastdot = strrchr(name, '.');
     33    if (lastdot == NULL) {
     34        packagecontext = NULL;
     35        shortname = name;
     36    }
     37    else {
     38        packagecontext = name;
     39        shortname = lastdot+1;
     40    }
    4141
    42         p = _PyImport_GetDynLoadFunc(name, shortname, pathname, fp);
    43         if (PyErr_Occurred())
    44                 return NULL;
    45         if (p == NULL) {
    46                 PyErr_Format(PyExc_ImportError,
    47                    "dynamic module does not define init function (init%.200s)",
    48                              shortname);
    49                 return NULL;
    50         }
    51         oldcontext = _Py_PackageContext;
    52         _Py_PackageContext = packagecontext;
    53         (*p)();
    54         _Py_PackageContext = oldcontext;
    55         if (PyErr_Occurred())
    56                 return NULL;
     42    p = _PyImport_GetDynLoadFunc(name, shortname, pathname, fp);
     43    if (PyErr_Occurred())
     44        return NULL;
     45    if (p == NULL) {
     46        PyErr_Format(PyExc_ImportError,
     47           "dynamic module does not define init function (init%.200s)",
     48                     shortname);
     49        return NULL;
     50    }
     51    oldcontext = _Py_PackageContext;
     52    _Py_PackageContext = packagecontext;
     53    (*p)();
     54    _Py_PackageContext = oldcontext;
     55    if (PyErr_Occurred())
     56        return NULL;
    5757
    58         m = PyDict_GetItemString(PyImport_GetModuleDict(), name);
    59         if (m == NULL) {
    60                 PyErr_SetString(PyExc_SystemError,
    61                                 "dynamic module not initialized properly");
    62                 return NULL;
    63         }
    64         /* Remember the filename as the __file__ attribute */
    65         if (PyModule_AddStringConstant(m, "__file__", pathname) < 0)
    66                 PyErr_Clear(); /* Not important enough to report */
     58    m = PyDict_GetItemString(PyImport_GetModuleDict(), name);
     59    if (m == NULL) {
     60        PyErr_SetString(PyExc_SystemError,
     61                        "dynamic module not initialized properly");
     62        return NULL;
     63    }
     64    /* Remember the filename as the __file__ attribute */
     65    if (PyModule_AddStringConstant(m, "__file__", pathname) < 0)
     66        PyErr_Clear(); /* Not important enough to report */
    6767
    68         if (_PyImport_FixupExtension(name, pathname) == NULL)
    69                 return NULL;
    70         if (Py_VerboseFlag)
    71                 PySys_WriteStderr(
    72                         "import %s # dynamically loaded from %s\n",
    73                         name, pathname);
    74         Py_INCREF(m);
    75         return m;
     68    if (_PyImport_FixupExtension(name, pathname) == NULL)
     69        return NULL;
     70    if (Py_VerboseFlag)
     71        PySys_WriteStderr(
     72            "import %s # dynamically loaded from %s\n",
     73            name, pathname);
     74    Py_INCREF(m);
     75    return m;
    7676}
    7777
Note: See TracChangeset for help on using the changeset viewer.