Jack Diederich <jackd...@gmail.com> added the comment:

if the id() of the left operand is identical to the id() of the first element 
in the result it would strongly support compiler skulldugerry.

class Crasher(tuple): pass
foo = Crasher()
x = [1]
a = x + foo
b=a[0]

if id(b) == id(x):
  raise Exception("It's the C compiler what did it!")

The only way I can think of this coming about is the right_op getting new'd and 
then .extend'ing(left_op).  That extend() must be going batsh*t and inserting 
the left_op instead of it's contained items.  The C-code for extend is more 
fiddly than the code for concatenation so there is more room for the compiler 
to generate bad code.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8847>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to