[PATCH] ui: drop values returned by inspect.*frame*() to avoid cycles

Jun Wu quark at fb.com
Wed Aug 10 10:10:49 EDT 2016


Excerpts from Jun Wu's message of 2016-08-10 15:08:16 +0100:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1470837920 -3600
> #      Wed Aug 10 15:05:20 2016 +0100
> # Node ID 1d492a4de1135415a890cd46c8622e4f339a9db8
> # Parent  3df9f780c90ec179a2f87802f352a0273da9a364
> # Available At https://bitbucket.org/quark-zju/hg-draft 
> #              hg pull https://bitbucket.org/quark-zju/hg-draft  -r 1d492a4de113
> ui: drop values returned by inspect.*frame*() to avoid cycles
> 
> "f = inspect.currentframe()" instantly creates a cycle because
> "f.f_locals['a']" is "f" itself.

This "a" should be changed to "f". Hope someone can fix it in flight.
Sorry for the inconvenience.

> 
> This patch explicitly sets those frame objects to None to avoid cycles.
> 
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -1175,6 +1175,7 @@ class ui(object):
>                             % ((msg,) + calframe[stacklevel][1:4]))
>              self.log('develwarn', '%s at: %s:%s (%s)\n',
>                       msg, *calframe[stacklevel][1:4])
> +            curframe = calframe = None
>  
>      def deprecwarn(self, msg, version):
>          """issue a deprecation warning


More information about the Mercurial-devel mailing list