diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-05-29 17:11:36 -0500 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-05-29 17:11:36 -0500 |
commit | 0c70ca9aacde6fc58afc211493fa178a27cf8866 (patch) | |
tree | e9e0dacd4e50bbf74fdfdf180b34df384d4258c5 /Python/importdl.c | |
parent | 07739f3555fc1a4691defa5b339633689c9d926c (diff) | |
parent | e20056c8f71a8e289016c0cbd5adb5826cd91f64 (diff) | |
download | cpython-git-0c70ca9aacde6fc58afc211493fa178a27cf8866.tar.gz |
merge 3.5 (#24328)
Diffstat (limited to 'Python/importdl.c')
-rw-r--r-- | Python/importdl.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Python/importdl.c b/Python/importdl.c index 579d2c5fad..1aa585d5e8 100644 --- a/Python/importdl.c +++ b/Python/importdl.c @@ -34,10 +34,11 @@ static const char *nonascii_prefix = "PyInitU"; */ static PyObject * get_encoded_name(PyObject *name, const char **hook_prefix) { - char *buf; PyObject *tmp; PyObject *encoded = NULL; - Py_ssize_t name_len, lastdot, i; + PyObject *modname = NULL; + Py_ssize_t name_len, lastdot; + _Py_IDENTIFIER(replace); /* Get the short name (substring after last dot) */ name_len = PyUnicode_GetLength(name); @@ -71,16 +72,14 @@ get_encoded_name(PyObject *name, const char **hook_prefix) { } } - buf = PyBytes_AS_STRING(encoded); - assert(Py_REFCNT(encoded) == 1); - for (i = 0; i < PyBytes_GET_SIZE(encoded) + 1; i++) { - if (buf[i] == '-') { - buf[i] = '_'; - } - } + /* Replace '-' by '_' */ + modname = _PyObject_CallMethodId(encoded, &PyId_replace, "cc", '-', '_'); + if (modname == NULL) + goto error; Py_DECREF(name); - return encoded; + Py_DECREF(encoded); + return modname; error: Py_DECREF(name); Py_XDECREF(encoded); |