fancyopts: Copy list arguments in command table before modifying.
authorThomas Arendsen Hein <thomas@intevation.de>
Sat, 11 Aug 2007 13:07:47 +0200
changeset 5093 88803a69b24a
parent 5092 6e040f6c2c9c
child 5094 ce21f76751f4
fancyopts: Copy list arguments in command table before modifying. Before this, executing commands.dispatch(['log', '-r', '0']) commands.dispatch(['log', '-r', 'tip']) would look like: hg log -r 0 hg log -r 0 -r tip Reported by TK Soh, patch by Alexis S. L. Carvalho
mercurial/fancyopts.py
--- a/mercurial/fancyopts.py	Sat Aug 11 12:47:58 2007 +0200
+++ b/mercurial/fancyopts.py	Sat Aug 11 13:07:47 2007 +0200
@@ -9,7 +9,10 @@
     for s, l, d, c in options:
         pl = l.replace('-', '_')
         map['-'+s] = map['--'+l] = pl
-        state[pl] = d
+        if isinstance(d, list):
+            state[pl] = d[:]
+        else:
+            state[pl] = d
         dt[pl] = type(d)
         if (d is not None and d is not True and d is not False and
             not callable(d)):