diff -r 3a524b647897 -r 84f12b832ee8 mercurial/bookmarks.py --- a/mercurial/bookmarks.py Tue Sep 18 21:39:12 2012 +0900 +++ b/mercurial/bookmarks.py Tue Sep 18 21:39:12 2012 +0900 @@ -159,7 +159,7 @@ if mark and marks[mark] in parents: old = repo[marks[mark]] new = repo[node] - if new in old.descendants() and mark == cur: + if old.descendant(new) and mark == cur: marks[cur] = new.node() update = True if mark != cur: @@ -281,4 +281,4 @@ validdests.remove(old) return new in validdests else: - return new in old.descendants() + return old.descendant(new)