[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