diff --git a/pointer.go b/pointer.go
index <HASH>..<HASH> 100644
--- a/pointer.go
+++ b/pointer.go
@@ -144,7 +144,7 @@ func FindMany(data []byte, paths []string) (map[string][]byte, error) {
 	beganLiteral := 0
 	matchedAt := 0
 	var current []string
-	for {
+	for todo > 0 {
 		var newOp int
 		if offset >= len(data) {
 			newOp = scan.EOF()
@@ -209,9 +209,6 @@ func FindMany(data []byte, paths []string) (map[string][]byte, error) {
 			}
 			m[currentStr] = val
 			todo--
-			if todo == 0 {
-				return m, nil
-			}
 		}
 	}
Changed the parsing loop slightly.

This prevents us from scanning the whole content when we're not
looking for anything, and it's less code to boot.