[Python-3000-checkins] r57494 - python/branches/py3k/Objects/unicodeobject.c
Neal Norwitz
nnorwitz at gmail.com
Sun Aug 26 20:19:23 CEST 2007
On 8/26/07, Guido van Rossum <guido at python.org> wrote:
> It was there because it's part of
>
> if (result == 0) { ... }
> else if (result == 1) { ... }
> else { assert(result == 2); ... }
>
> However the "..." in the last block contains declarations so the
> assert was moved below the declarations, and, worse, one of the
> declarations redefines 'result' (as a PyObject * initialized to NULL).
> So as soon as result==2 you'd get the failing assert.
Ah, I see. I didn't realize that the result in the local block
shadowed another result. I will fix that and add back in the assert
so it makes sense.
> I think the assert serves a purpose. Perhaps a better solution would be to add
>
> assert(0 <= result && result <= 2);
>
> right after the place where the original result is computed.
Yes, I like that better too.
> (BTW the name MarkupIterator_next confused me for a while until I
> remembered about stringlib. I think that after this has been
> backported to 2.x, we should factor out the stringlib stuff so it's
> just part of unicodeobject.c. Or it needs to use a better naming
> convention.)
I haven't had time to review this patch yet. :-(
Refactoring stringlib to be part of unicodeobject makes sense assuming
stringobject goes away. The reason stringlib was there IIUC was to
support (share code for) both stringobject and unicodeobject.
n
More information about the Python-3000-checkins
mailing list