8000 Fix for segv in `_PyInterpolation_FromStackRefSteal` (#61) · AA-Turner/cpython@e6d01ef · GitHub
[go: up one dir, main page]

Skip to content

Commit e6d01ef

Browse files
authored
Fix for segv in _PyInterpolation_FromStackRefSteal (python#61)
1 parent 6a7b448 commit e6d01ef

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

Objects/interpolationobject.c

Lines changed: 12 additions & 4 deletions
< 8000 /tr>
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,19 @@ _PyInterpolation_FromStackRefSteal(_PyStackRef *values)
241241
PyTuple_SET_ITEM(args, 0, PyStackRef_AsPyObjectSteal(values[0]));
242242
PyTuple_SET_ITEM(args, 1, PyStackRef_AsPyObjectSteal(values[1]));
243243

244-
PyObject *conversion = PyStackRef_AsPyObjectSteal(values[2]);
245-
PyTuple_SET_ITEM(args, 2, conversion ? conversion : Py_NewRef(Py_None));
244+
if (PyStackRef_IsNull(values[2])) {
245+
PyTuple_SET_ITEM(args, 2, Py_NewRef(Py_None));
246+
} else {
247+
PyObject *conversion = PyStackRef_AsPyObjectSteal(values[2]);
248+
PyTuple_SET_ITEM(args, 2, conversion);
249+
}
246250

247-
PyObject *format_spec = PyStackRef_AsPyObjectSteal(values[3]);
248-
PyTuple_SET_ITEM(args, 3, format_spec ? format_spec : &_Py_STR(empty));
251+
if (PyStackRef_IsNull(values[3])) {
252+
PyTuple_SET_ITEM(args, 3, &_Py_STR(empty));
253+
} else {
254+
PyObject *format_spec = PyStackRef_AsPyObjectSteal(values[3]);
255+
PyTuple_SET_ITEM(args, 3, format_spec);
256+
}
249257

250258
PyObject *interpolation = PyObject_CallObject((PyObject *) &_PyInterpolation_Type, args);
251259
Py_DECREF(args);

0 commit comments

Comments
 (0)
0