diff --git a/errorlint/printf.go b/errorlint/printf.go
index f3d81b5..d9a935f 100644
--- a/errorlint/printf.go
+++ b/errorlint/printf.go
@@ -14,6 +14,9 @@ func verbOrder(verbs []verb, numArgs int) [][]verb {
 		if v.index != -1 {
 			i = v.index - 1
 		}
+		if i >= len(orderedVerbs) {
+			continue
+		}
 		orderedVerbs[i] = append(orderedVerbs[i], v)
 		verbs = verbs[1:]
 		i++
diff --git a/errorlint/testdata/src/issues/github-29.go b/errorlint/testdata/src/issues/github-29.go
new file mode 100644
index 0000000..61eeb53
--- /dev/null
+++ b/errorlint/testdata/src/issues/github-29.go
@@ -0,0 +1,8 @@
+package issues
+
+import "fmt"
+
+func Issue29() {
+	err := fmt.Errorf("%v %#[2]v", struct{ string }{})
+	fmt.Println(err)
+}