Index: /branches/release-34/lib/MT/Builder.pm
===================================================================
--- /branches/release-34/lib/MT/Builder.pm (revision 1661)
+++ /branches/release-34/lib/MT/Builder.pm (revision 1859)
@@ -398,7 +398,8 @@
                 if ((defined $type) && ($type == 2)) {
                     # conditional; process result
+                    my $vars = $ctx->{__stash}{vars};
+                    local $vars->{__value__} = delete $vars->{__cond_value__};
+                    local $vars->{__name__}  = delete $vars->{__cond_name__};
                     $out = $out ? $ctx->slurp(\%args, $cond) : $ctx->else(\%args, $cond);
-                    delete $ctx->{__stash}{vars}{__value__};
-                    delete $ctx->{__stash}{vars}{__name__};
                     return $build->error(MT->translate("Error in <mt[_1]> tag: [_2]", $t->[0], $ctx->errstr))
                         unless defined $out;
Index: /branches/release-34/lib/MT/Template/ContextHandlers.pm
===================================================================
--- /branches/release-34/lib/MT/Template/ContextHandlers.pm (revision 1855)
+++ /branches/release-34/lib/MT/Template/ContextHandlers.pm (revision 1859)
@@ -1418,6 +1418,6 @@
     }
 
-    $ctx->{__stash}{vars}->{__value__} = $value;
-    $ctx->{__stash}{vars}->{__name__} = $var;
+    local $ctx->{__stash}{vars}{__cond_value__} = $value;
+    local $ctx->{__stash}{vars}{__cond_name__} = $var;
 
     if ( my $op = $args->{op} ) {
