Clone lists before modifying
authorKlaus Aehlig <aehlig@google.com>
Tue, 10 Nov 2015 15:40:47 +0000 (16:40 +0100)
committerKlaus Aehlig <aehlig@google.com>
Tue, 10 Nov 2015 16:14:55 +0000 (17:14 +0100)
When an opcode expands to a list of jobs, we extend the reason trail
of the new jobs with that of the original opcode that expanded to them.
Before modifying the reason trail, however, we should duplicate it to
avoid side effects on shared copies---like the default empty list.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Lisa Velden <velden@google.com>

lib/mcpu.py

index 72f13bf..ac26054 100644 (file)
@@ -225,7 +225,7 @@ def _SetBaseOpParams(src, defcomment, dst):
     dst.comment = defcomment
 
   if hasattr(src, constants.OPCODE_REASON):
-    dst.reason = getattr(dst, constants.OPCODE_REASON, [])
+    dst.reason = list(getattr(dst, constants.OPCODE_REASON, []))
     dst.reason.extend(getattr(src, constants.OPCODE_REASON, []))