Antoine Pitrou <pit...@free.fr> added the comment: + if (len == 0) { + if (PyByteArray_CheckExact(self)) { + Py_INCREF(self); + return (PyObject *)self; + } + return PyByteArray_FromStringAndSize(NULL, 0); + }
This looks like a dubious micro-optimization. If len == 0, all loops will exit early anyway (same for similar snippets in bytesobject.c and unicodeobject.c). + if (i == 0 && j == len && PyByteArray_CheckExact(self)) { + Py_INCREF(self); + return (PyObject *)self; + } bytearray objects are mutable, so you can't return the same object without breaking expected semantics. e.g.: >>> a = bytearray() >>> b = a.strip() >>> b.append(49) >>> a bytearray(b'') >>> b bytearray(b'1') > diff -r b5ccdf7c032a Python/bltinmodule.c > Binary file Python/bltinmodule.c has changed Uh, what's this? bltinmodule.c shouldn't be considered a binary file. It probably means you added a NUL byte in it by mistake. > Looking at just how similar these 3 implementations are I feel that we > could also unify/generalize them into one generic helper implementation > and leave the object marshaling up to the type specific methods. You could put it in Objects/stringlib. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12807> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com