# Re: gitk: cannot handle tags with a % in them

4 messages from 2011-03-01 to 2011-03-09. Participants: Jonathan Nieder, Pat Thoyts, Paul Mackerras.
Thread: https://gitlist.dev/t/26629

## Jonathan Nieder, 2011-03-01 01:38

Subject: Re: gitk: cannot handle tags with a % in them
Message-ID: <20110301013841.GC5597@elie>
URL: https://gitlist.dev/e/20110301013841.GC5597%40elie
In-Reply-To: <20110227224024.3751.96676.reportbug@pcfelipe.sateler>

```
Hi,

Felipe Sateler wrote[1]:

> Gitk chokes on tags containing a % character.

Reproduced as follows:

	git tag a%b
	gitk

and then clicking on the "| a%b >" symbol.

Result:

	can't read "tagids(foo1ar)": no such element in array
	can't read "tagids(foo1ar)": no such element in array
	    while executing
	"set text "[mc "Tag"]: $tag\n[mc "Id"]:  $tagids($tag)""
	    (procedure "showtag" line 19)
	    invoked from within
	"showtag foo1ar 1"
	    (command bound to event)

It seems that a tag containing a percent sign works okay in
an expression like $tagids($tag), but not in a quoted expression
like "$tagids($tag)".

Hints?

Thanks for gitk, of course. :)
Jonathan

[1] http://bugs.debian.org/615645

```

## Pat Thoyts, 2011-03-01 23:50

Subject: [PATCH] gitk: ensure quoted tag names in event bindings
Message-ID: <87tyfmqu1x.fsf_-_@fox.patthoyts.tk>
URL: https://gitlist.dev/e/87tyfmqu1x.fsf_-_%40fox.patthoyts.tk
In-Reply-To: <20110301013841.GC5597@elie>

```
Tag names that contain a % character require quoting when used in event
bindings or the name may be mis-recognised for percent substitution in
the event script.

Reported-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
---

Jonathan Nieder <jrnieder@gmail.com> writes:

>Hi,
>
>Felipe Sateler wrote[1]:
>
>> Gitk chokes on tags containing a % character.
>
>Reproduced as follows:
>
>	git tag a%b
>	gitk
>
>and then clicking on the "| a%b >" symbol.
>
>Result:
>
>	can't read "tagids(foo1ar)": no such element in array
>	can't read "tagids(foo1ar)": no such element in array
>	    while executing
>	"set text "[mc "Tag"]: $tag\n[mc "Id"]:  $tagids($tag)""
>	    (procedure "showtag" line 19)
>	    invoked from within
>	"showtag foo1ar 1"
>	    (command bound to event)
>
>It seems that a tag containing a percent sign works okay in
>an expression like $tagids($tag), but not in a quoted expression
>like "$tagids($tag)".
>
>Hints?
>
>Thanks for gitk, of course. :)
>Jonathan
>
>[1] http://bugs.debian.org/615645

 gitk |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/gitk b/gitk
index 9cbc09d..6513537 100755
--- a/gitk
+++ b/gitk
@@ -6300,6 +6300,7 @@ proc drawtags {id x xt y1} {
 	       -width $lthickness -fill black -tags tag.$id]
     $canv lower $t
     foreach tag $marks x $xvals wid $wvals {
+	set tag_quoted [string map {% %%} $tag]
 	set xl [expr {$x + $delta}]
 	set xr [expr {$x + $delta + $wid + $lthickness}]
 	set font mainfont
@@ -6308,7 +6309,7 @@ proc drawtags {id x xt y1} {
 	    set t [$canv create polygon $x [expr {$yt + $delta}] $xl $yt \
 		       $xr $yt $xr $yb $xl $yb $x [expr {$yb - $delta}] \
 		       -width 1 -outline black -fill yellow -tags tag.$id]
-	    $canv bind $t <1> [list showtag $tag 1]
+	    $canv bind $t <1> [list showtag $tag_quoted 1]
 	    set rowtextx([rowofcommit $id]) [expr {$xr + $linespc}]
 	} else {
 	    # draw a head or other ref
@@ -6335,9 +6336,9 @@ proc drawtags {id x xt y1} {
 	set t [$canv create text $xl $y1 -anchor w -text $tag -fill $fgcolor \
 		   -font $font -tags [list tag.$id text]]
 	if {$ntags >= 0} {
-	    $canv bind $t <1> [list showtag $tag 1]
+	    $canv bind $t <1> [list showtag $tag_quoted 1]
 	} elseif {$nheads >= 0} {
-	    $canv bind $t $ctxbut [list headmenu %X %Y $id $tag]
+	    $canv bind $t $ctxbut [list headmenu %X %Y $id $tag_quoted]
 	}
     }
     return $xt
-- 
1.7.4.msysgit.0

```

## Jonathan Nieder, 2011-03-02 05:47

Subject: Re: [PATCH] gitk: ensure quoted tag names in event bindings
Message-ID: <20110302054629.GB27567@elie>
URL: https://gitlist.dev/e/20110302054629.GB27567%40elie
In-Reply-To: <87tyfmqu1x.fsf_-_@fox.patthoyts.tk>

```
Pat Thoyts wrote:

> Tag names that contain a % character require quoting when used in event
> bindings or the name may be mis-recognised for percent substitution in
> the event script.
> 
> Reported-by: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
[...]
> 
>  gitk |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)

Thanks, makes sense (and seems to work).

```

## Paul Mackerras, 2011-03-09 10:05

Subject: Re: [PATCH] gitk: ensure quoted tag names in event bindings
Message-ID: <20110309100547.GA4014@brick.ozlabs.ibm.com>
URL: https://gitlist.dev/e/20110309100547.GA4014%40brick.ozlabs.ibm.com
In-Reply-To: <87tyfmqu1x.fsf_-_@fox.patthoyts.tk>

```
On Tue, Mar 01, 2011 at 11:50:50PM +0000, Pat Thoyts wrote:

> Tag names that contain a % character require quoting when used in event
> bindings or the name may be mis-recognised for percent substitution in
> the event script.
> 
> Reported-by: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

Thanks, applied.

Paul.

```
