diff --git a/src/patterns.js b/src/patterns.js
index 99c08cd13ad6a3dda1e11d6c6ada1166d05e9dbb..cd62af667a8b37a7ee7dda408a964e69237e072b 100644
--- a/src/patterns.js
+++ b/src/patterns.js
@@ -632,11 +632,12 @@
                 };
             }
             success = subMatch.success;
-            patternEnv = loadPatternEnv(patternEnv,
-                                        subMatch.patternEnv,
-                                        topLevel,
-                                        pattern.repeat);
-
+            if(success) {
+                patternEnv = loadPatternEnv(patternEnv,
+                                            subMatch.patternEnv,
+                                            topLevel,
+                                            pattern.repeat);
+            }
         } else {
             if (pattern.class === "wildcard") {
                 success = true;