/* runtime lifecycle */
PyAPI_FUNC(PyObject *)
-_PyBuildSlice_ConsumeRefs(PyObject *start, PyObject *stop);
+_PyBuildSlice_ConsumeRefs(PyObject *start, PyObject *stop, PyObject *step);
#ifdef __cplusplus
}
v = stack_pointer[-4];
_PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
+ PyStackRef_AsPyObjectSteal(stop),
+ Py_None);
stack_pointer = _PyFrame_GetStackPointer(frame);
int err;
if (slice == NULL) {
index is present.
*/
-static PySliceObject *
-_PyBuildSlice_Consume2(PyObject *start, PyObject *stop, PyObject *step)
+PyObject *
+_PyBuildSlice_ConsumeRefs(PyObject *start, PyObject *stop, PyObject *step)
{
assert(start != NULL && stop != NULL && step != NULL);
PySliceObject *obj = _Py_FREELIST_POP(PySliceObject, slices);
obj->start = start;
obj->stop = stop;
- obj->step = Py_NewRef(step);
+ obj->step = step;
_PyObject_GC_TRACK(obj);
- return obj;
+ return (PyObject *)obj;
error:
Py_DECREF(start);
Py_DECREF(stop);
+ Py_DECREF(step);
return NULL;
}
if (stop == NULL) {
stop = Py_None;
}
- return (PyObject *)_PyBuildSlice_Consume2(Py_NewRef(start),
- Py_NewRef(stop), step);
-}
-
-PyObject *
-_PyBuildSlice_ConsumeRefs(PyObject *start, PyObject *stop)
-{
- assert(start != NULL && stop != NULL);
- return (PyObject *)_PyBuildSlice_Consume2(start, stop, Py_None);
+ return _PyBuildSlice_ConsumeRefs(Py_NewRef(start),
+ Py_NewRef(stop), Py_NewRef(step));
}
PyObject *
return NULL;
}
- slice = PySlice_New(start, end, NULL);
- Py_DECREF(start);
- Py_DECREF(end);
+ slice = _PyBuildSlice_ConsumeRefs(start, end, Py_None);
return slice;
}
op(_STORE_SLICE, (v, container, start, stop -- )) {
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
+ PyStackRef_AsPyObjectSteal(stop),
+ Py_None);
int err;
if (slice == NULL) {
err = 1;
ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
_PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
+ PyStackRef_AsPyObjectSteal(stop),
+ Py_None);
stack_pointer = _PyFrame_GetStackPointer(frame);
int err;
if (slice == NULL) {
v = stack_pointer[-4];
_PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
+ PyStackRef_AsPyObjectSteal(stop),
+ Py_None);
stack_pointer = _PyFrame_GetStackPointer(frame);
int err;
if (slice == NULL) {