bpo-30602: Fix refleak in os.spawnv() (#2212) (#2486)
When os.spawnv() fails while handling arguments, free correctly
argvlist: pass lastarg+1 rather than lastarg to free_string_array()
to also free the first item.
(cherry picked from commit 8acb4cf2b3436652568d7a70228b166316181466)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 4607b18..c205dd9 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5106,7 +5106,7 @@
return NULL;
}
if (i == 0 && !argvlist[0][0]) {
- free_string_array(argvlist, i);
+ free_string_array(argvlist, i + 1);
PyErr_SetString(
PyExc_ValueError,
"spawnv() arg 2 first element cannot be empty");