hbisect: use tryreadlines to load state

This closes the file handle after reading, which stops PyPy from
leaking open file handles and thus failing test-bisect3.t.
This commit is contained in:
Bryan O'Sullivan 2015-12-27 23:55:54 +09:00
parent cf9489897c
commit 6d56e2235c

View File

@ -11,7 +11,6 @@
from __future__ import absolute_import
import collections
import os
from .i18n import _
from .node import (
@ -143,13 +142,12 @@ def bisect(changelog, state):
def load_state(repo):
state = {'current': [], 'good': [], 'bad': [], 'skip': []}
if os.path.exists(repo.join("bisect.state")):
for l in repo.vfs("bisect.state"):
kind, node = l[:-1].split()
node = repo.lookup(node)
if kind not in state:
raise error.Abort(_("unknown bisect kind %s") % kind)
state[kind].append(node)
for l in repo.vfs.tryreadlines("bisect.state"):
kind, node = l[:-1].split()
node = repo.lookup(node)
if kind not in state:
raise error.Abort(_("unknown bisect kind %s") % kind)
state[kind].append(node)
return state