]> Cypherpunks repositories - gostls13.git/commitdiff
godoc: proper index range checking when extracting example code
authorRobert Griesemer <gri@golang.org>
Wed, 22 Feb 2012 19:25:21 +0000 (11:25 -0800)
committerRobert Griesemer <gri@golang.org>
Wed, 22 Feb 2012 19:25:21 +0000 (11:25 -0800)
Fixes #3092.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5683075

src/cmd/godoc/godoc.go

index 6dfaf149f928a42f5b43ab33d4b6c96c05c35b86..72496589561d007e4c08cbe6b9ab1e79537d7278 100644 (file)
@@ -524,11 +524,11 @@ func example_htmlFunc(funcName string, examples []*doc.Example, fset *token.File
                out := eg.Output
 
                // additional formatting if this is a function body
-               if len(code) > 0 && code[0] == '{' {
+               if n := len(code); n >= 2 && code[0] == '{' && code[n-1] == '}' {
+                       // remove surrounding braces
+                       code = code[1 : n-1]
                        // unindent
                        code = strings.Replace(code, "\n    ", "\n", -1)
-                       // remove surrounding braces
-                       code = code[2 : len(code)-2]
                        // remove output comment
                        if loc := exampleOutputRx.FindStringIndex(code); loc != nil {
                                code = strings.TrimSpace(code[:loc[0]])