Mercurial > public > mercurial-scm > hg-stable
diff mercurial/httprepo.py @ 15246:7b15dd9125b3
httprepo: make __del__ more stable in error situations
Some errors could leave self.urlopener uninitialized and thus cause strange
crashes in __del__.
This member variable is now "declared statically" and checked for assignment
before use.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Thu, 13 Oct 2011 04:27:49 +0200 |
parents | 85322c19c831 |
children |
line wrap: on
line diff
--- a/mercurial/httprepo.py Sun Oct 31 18:29:55 2010 +0100 +++ b/mercurial/httprepo.py Thu Oct 13 04:27:49 2011 +0200 @@ -28,6 +28,7 @@ self.path = path self.caps = None self.handler = None + self.urlopener = None u = util.url(path) if u.query or u.fragment: raise util.Abort(_('unsupported URL component: "%s"') % @@ -42,9 +43,10 @@ self.urlopener = url.opener(ui, authinfo) def __del__(self): - for h in self.urlopener.handlers: - h.close() - getattr(h, "close_all", lambda : None)() + if self.urlopener: + for h in self.urlopener.handlers: + h.close() + getattr(h, "close_all", lambda : None)() def url(self): return self.path