[PATCH 5 of 9 v2] stdio: catch StdioError in dispatch.run and clean up appropriately

Kevin Bullock kbullock+mercurial at ringworld.org
Mon Apr 17 17:12:32 EDT 2017


> On Apr 13, 2017, at 23:29, Bryan O'Sullivan <bos at serpentine.com> wrote:
> 
> # HG changeset patch
> # User Bryan O'Sullivan <bryano at fb.com>
> # Date 1491947652 25200
> #      Tue Apr 11 14:54:12 2017 -0700
> # Node ID 942022da49166766fe4a7967b71411879221c197
> # Parent  a5aa1dfd9afed15c0cd762c4a72e5e0082ac074c
> stdio: catch StdioError in dispatch.run and clean up appropriately
> 
> We attempt to report what went wrong, and more importantly exit the
> program with an error code.
> 
> (The exception we catch is not yet raised anywhere in the code.)
> 
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -77,7 +77,22 @@ class request(object):
> 
> def run():
>     "run the command in sys.argv"
> -    sys.exit((dispatch(request(pycompat.sysargv[1:])) or 0) & 255)
> +    req = request(pycompat.sysargv[1:])
> +    err = None
> +    try:
> +        status = (dispatch(req) or 0) & 255

Nit: I don't think the `& 255` is necessary here since we do it below.

If you can confirm I'm right, I'll make the change to clean it up.

pacem in terris / мир / शान्ति / ‎‫سَلاَم‬ / 平和
Kevin R. Bullock



More information about the Mercurial-devel mailing list