Patchwork [PING,v3] Python API: Fix an exception when registering a global pretty-printer in verbose mode

login
register
mail settings
Submitter Martin Galvan
Date April 21, 2015, 5:25 p.m.
Message ID <1429637147-5430-1-git-send-email-martin.galvan@tallertechnologies.com>
Download mbox | patch
Permalink /patch/6347/
State New
Headers show

Comments

Martin Galvan - April 21, 2015, 5:25 p.m.
This patch fixes a Python exception that was being thrown when trying to register a global pretty-printer with verbose mode on:

  File "/usr/share/gdb/python/gdb/printing.py", line 119, in register_pretty_printer
    gdb.write("Registering global %s pretty-printer ...\n" % name)
NameError: name 'name' is not defined

This patch was previously accepted by Doug Evans (https://sourceware.org/ml/gdb-patches/2015-03/msg00312.html), but it was never committed.

I have a company-wide copyright assignment for gdb. I don't have commit access though, so it would be great if anyone could commit this for me. Thanks a lot!

Chamges in v3:
 * Added the function name to the ChangeLog entry, and wrapped it at 80 characters.

Changes in v2:
 * Moved printer.name to the next line so that it won't break the 80 character limit.

--
ChangeLog:

gdb/
2015-04-16  Martin Galvan  <martin.galvan@tallertechnologies.com>

	* python/lib/gdb/printing.py (register_pretty_printer): Fix exception
	when registering a global pretty-printer in verbose mode.
---
 gdb/python/lib/gdb/printing.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
2.3.5
Doug Evans - April 22, 2015, 7:35 p.m.
On Tue, Apr 21, 2015 at 10:25 AM, Martin Galvan
<martin.galvan@tallertechnologies.com> wrote:
> This patch fixes a Python exception that was being thrown when trying to register a global pretty-printer with verbose mode on:
>
>   File "/usr/share/gdb/python/gdb/printing.py", line 119, in register_pretty_printer
>     gdb.write("Registering global %s pretty-printer ...\n" % name)
> NameError: name 'name' is not defined
>
> This patch was previously accepted by Doug Evans (https://sourceware.org/ml/gdb-patches/2015-03/msg00312.html), but it was never committed.
>
> I have a company-wide copyright assignment for gdb. I don't have commit access though, so it would be great if anyone could commit this for me. Thanks a lot!
>
> Chamges in v3:
>  * Added the function name to the ChangeLog entry, and wrapped it at 80 characters.
>
> Changes in v2:
>  * Moved printer.name to the next line so that it won't break the 80 character limit.
>
> --
> ChangeLog:
>
> gdb/
> 2015-04-16  Martin Galvan  <martin.galvan@tallertechnologies.com>
>
>         * python/lib/gdb/printing.py (register_pretty_printer): Fix exception
>         when registering a global pretty-printer in verbose mode.
> ---
>  gdb/python/lib/gdb/printing.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py
> index e384e41..c935333 100644
> --- a/gdb/python/lib/gdb/printing.py
> +++ b/gdb/python/lib/gdb/printing.py
> @@ -116,7 +116,8 @@ def register_pretty_printer(obj, printer, replace=False):
>
>      if obj is None:
>          if gdb.parameter("verbose"):
> -            gdb.write("Registering global %s pretty-printer ...\n" % name)
> +            gdb.write("Registering global %s pretty-printer ...\n" %
> +                      printer.name)
>          obj = gdb
>      else:
>          if gdb.parameter("verbose"):

Hi.
Looking at the code again I found a couple more issues,
so I fixed those too and wrote a testcase.

https://sourceware.org/ml/gdb-patches/2015-04/msg00837.html
Martin Galvan - April 22, 2015, 7:36 p.m.
That's great. Thanks a lot!

On Wed, Apr 22, 2015 at 4:35 PM, Doug Evans <dje@google.com> wrote:
> On Tue, Apr 21, 2015 at 10:25 AM, Martin Galvan
> <martin.galvan@tallertechnologies.com> wrote:
>> This patch fixes a Python exception that was being thrown when trying to register a global pretty-printer with verbose mode on:
>>
>>   File "/usr/share/gdb/python/gdb/printing.py", line 119, in register_pretty_printer
>>     gdb.write("Registering global %s pretty-printer ...\n" % name)
>> NameError: name 'name' is not defined
>>
>> This patch was previously accepted by Doug Evans (https://sourceware.org/ml/gdb-patches/2015-03/msg00312.html), but it was never committed.
>>
>> I have a company-wide copyright assignment for gdb. I don't have commit access though, so it would be great if anyone could commit this for me. Thanks a lot!
>>
>> Chamges in v3:
>>  * Added the function name to the ChangeLog entry, and wrapped it at 80 characters.
>>
>> Changes in v2:
>>  * Moved printer.name to the next line so that it won't break the 80 character limit.
>>
>> --
>> ChangeLog:
>>
>> gdb/
>> 2015-04-16  Martin Galvan  <martin.galvan@tallertechnologies.com>
>>
>>         * python/lib/gdb/printing.py (register_pretty_printer): Fix exception
>>         when registering a global pretty-printer in verbose mode.
>> ---
>>  gdb/python/lib/gdb/printing.py | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py
>> index e384e41..c935333 100644
>> --- a/gdb/python/lib/gdb/printing.py
>> +++ b/gdb/python/lib/gdb/printing.py
>> @@ -116,7 +116,8 @@ def register_pretty_printer(obj, printer, replace=False):
>>
>>      if obj is None:
>>          if gdb.parameter("verbose"):
>> -            gdb.write("Registering global %s pretty-printer ...\n" % name)
>> +            gdb.write("Registering global %s pretty-printer ...\n" %
>> +                      printer.name)
>>          obj = gdb
>>      else:
>>          if gdb.parameter("verbose"):
>
> Hi.
> Looking at the code again I found a couple more issues,
> so I fixed those too and wrote a testcase.
>
> https://sourceware.org/ml/gdb-patches/2015-04/msg00837.html

Patch

diff --git a/gdb/python/lib/gdb/printing.py b/gdb/python/lib/gdb/printing.py
index e384e41..c935333 100644
--- a/gdb/python/lib/gdb/printing.py
+++ b/gdb/python/lib/gdb/printing.py
@@ -116,7 +116,8 @@  def register_pretty_printer(obj, printer, replace=False):

     if obj is None:
         if gdb.parameter("verbose"):
-            gdb.write("Registering global %s pretty-printer ...\n" % name)
+            gdb.write("Registering global %s pretty-printer ...\n" %
+                      printer.name)
         obj = gdb
     else:
         if gdb.parameter("verbose"):