On 22.12.16 12:16, Armin Rigo wrote:
On 21 December 2016 at 15:51, Serhiy Storchaka <storch...@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.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to