Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] bpo-35537: Fix function name in os.posix_spawnp() errors #11719

Merged
merged 1 commit into from
Feb 1, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -5166,11 +5166,11 @@ convert_sched_param(PyObject *param, struct sched_param *res);
#endif

static int
parse_posix_spawn_flags(PyObject *setpgroup, int resetids, int setsid, PyObject *setsigmask,
parse_posix_spawn_flags(const char *func_name, PyObject *setpgroup,
int resetids, int setsid, PyObject *setsigmask,
PyObject *setsigdef, PyObject *scheduler,
posix_spawnattr_t *attrp)
{
const char *func_name = "posix_spawnp";
long all_flags = 0;

errno = posix_spawnattr_init(attrp);
Expand Down Expand Up @@ -5400,6 +5400,7 @@ py_posix_spawn(int use_posix_spawnp, PyObject *module, path_t *path, PyObject *a
PyObject *setpgroup, int resetids, int setsid, PyObject *setsigmask,
PyObject *setsigdef, PyObject *scheduler)
{
const char *func_name = use_posix_spawnp ? "posix_spawnp" : "posix_spawn";
EXECV_CHAR **argvlist = NULL;
EXECV_CHAR **envlist = NULL;
posix_spawn_file_actions_t file_actions_buf;
Expand All @@ -5417,19 +5418,20 @@ py_posix_spawn(int use_posix_spawnp, PyObject *module, path_t *path, PyObject *a
like posix.environ. */

if (!PyList_Check(argv) && !PyTuple_Check(argv)) {
PyErr_SetString(PyExc_TypeError,
"posix_spawn: argv must be a tuple or list");
PyErr_Format(PyExc_TypeError,
"%s: argv must be a tuple or list", func_name);
goto exit;
}
argc = PySequence_Size(argv);
if (argc < 1) {
PyErr_SetString(PyExc_ValueError, "posix_spawn: argv must not be empty");
PyErr_Format(PyExc_ValueError,
"%s: argv must not be empty", func_name);
return NULL;
}

if (!PyMapping_Check(env)) {
PyErr_SetString(PyExc_TypeError,
"posix_spawn: environment must be a mapping object");
PyErr_Format(PyExc_TypeError,
"%s: environment must be a mapping object", func_name);
goto exit;
}

Expand All @@ -5438,8 +5440,8 @@ py_posix_spawn(int use_posix_spawnp, PyObject *module, path_t *path, PyObject *a
goto exit;
}
if (!argvlist[0][0]) {
PyErr_SetString(PyExc_ValueError,
"posix_spawn: argv first element cannot be empty");
PyErr_Format(PyExc_ValueError,
"%s: argv first element cannot be empty", func_name);
goto exit;
}

Expand Down Expand Up @@ -5467,8 +5469,8 @@ py_posix_spawn(int use_posix_spawnp, PyObject *module, path_t *path, PyObject *a
file_actionsp = &file_actions_buf;
}

if (parse_posix_spawn_flags(setpgroup, resetids, setsid, setsigmask,
setsigdef, scheduler, &attr)) {
if (parse_posix_spawn_flags(func_name, setpgroup, resetids, setsid,
setsigmask, setsigdef, scheduler, &attr)) {
goto exit;
}
attrp = &attr;
Expand Down