fixed bug in compiled code to handle undef as an allowed value - needs testing
Uri Guttman [Wed, 14 Jan 2009 05:41:38 +0000 (00:41 -0500)]
pointed out by bob rogers

removed use of $1, $2 in parsing chunks in the compiler.
pointed out by bobbie fox

lib/Template/Simple.pm

index 165f132..15d3dae 100644 (file)
@@ -144,8 +144,9 @@ sub _compile_chunk {
 
        my $code = <<CODE ;
 ${indent}my \@data = $data_init ;
-${indent}while( defined( my \$data = shift \@data ) ) {
+${indent}while( \@data ) {
 
+${indent}      my \$data = shift \@data ;
 ${indent}      if ( ref \$data eq 'ARRAY' ) {
 ${indent}              push \@data, \@{\$data} ;
 ${indent}              next ;
@@ -157,7 +158,8 @@ CODE
 
 # loop all nested chunks and the text separating them
 
-       while( $template =~ m{$self->{chunk_re}} ) {
+       while( my( $parsed_name, $parsed_body ) =
+               $template =~ m{$self->{chunk_re}} ) {
 
 # get the pre-match text and compile its scalars and text. append to the code
 
@@ -172,7 +174,9 @@ CODE
 
 # compile the nested chunk and append to the code
 
-               $code .= $self->_compile_chunk( $1, $2, $indent ) ;
+               $code .= $self->_compile_chunk(
+                               $parsed_name, $parsed_body, $indent
+               ) ;
 
 # chop off the pre-match and the chunk