]> git.sesse.net Git - xml-template/blobdiff - perl/XML/Template.pm
Fix a potential bug in the C++0x cleaning.
[xml-template] / perl / XML / Template.pm
index ed44d63ddeb5abab7989f38bbe5734ce1b05fe27..3747f83b6340e8b2db95e48c6e8590226e90c1a4 100644 (file)
@@ -45,6 +45,8 @@ sub process {
                        $newobj->setOwnerDocument($node->getOwnerDocument);
                }
                $node->appendChild($newobj);
+
+               process($newobj, {}, $clean, $nsup);
        } elsif (ref($obj) eq 'HASH') {                                         # substitute
                for my $child ($node->getChildNodes) {
                        my $processed = 0;
@@ -63,7 +65,6 @@ sub process {
                                                }
                                        }
                                }
-                               print $child->getTagName, "\n";
 
                                my (undef, undef, $tag) = $nsup->process_element_name($child->getTagName);
 
@@ -112,6 +113,7 @@ sub process {
                }
                
                for my $instance (@$obj) {
+                       next if (!defined($instance));
 
                        my $newnode = $frag->cloneNode(1);
                        process($newnode, $instance, $clean, $nsup);
@@ -120,7 +122,6 @@ sub process {
                }
 
                $frag->dispose;
-               return;
        }
 
        clean($node, $nsup) if $clean;
@@ -158,7 +159,9 @@ sub alternate {
        my $num = scalar @elems;
 
        for my $ref (@$array) {
-               $ref->{$tag} = $elems[$i++ % $num];
+               if (defined($ref)) {
+                       $ref->{$tag} = $elems[$i++ % $num];
+               }
        }
 
        return $array;