[Python-Dev] PySlice_GetIndicesEx annd stable ABI: bikeshedding
Serhiy Storchaka
storchaka at gmail.com
Thu Dec 22 05:34:39 EST 2016
On 22.12.16 12:16, Armin Rigo wrote:
> On 21 December 2016 at 15:51, Serhiy Storchaka <storchaka at gmail.com> wrote:
>> The code
>>
>> if (PySlice_GetIndicesEx(item, length,
>> &start, &stop, &step, &slicelength) < 0)
>> return -1;
>>
>> should be replaced with
>>
>> if (foo(item, &start, &stop, &step) < 0)
>> return -1;
>> slicelength = bar(&start, &stop, step, length);
>
> As far as I can tell, as written, this change would not fix anything.
> Shouldn't it be along the following lines instead?
>
> if (foo(item, &start, &stop, &step) < 0)
> return -1;
> length = PyList_GET_SIZE(mylist); /* <= after foo() */
> slicelength = bar(&start, &stop, &step, length);
Yes, the point is that length is not a constant, but a result of an
expression and should be evaluated after calling foo().
step is not changed by bar() and can be passed by value to it.
More information about the Python-Dev
mailing list