--- loncom/xml/lonxml.pm 2001/01/03 00:13:22 1.42
+++ loncom/xml/lonxml.pm 2001/01/04 19:16:16 1.43
@@ -104,7 +104,10 @@ sub xmlparse {
#if ($target eq 'meta') {$Apache::lonxml::textredirection = 0;}
#clear out any tags that didn't end
while ($token->[1] ne $stack[$#stack]
- && ($#stack > -1)) {pop @stack;pop @parstack;&decreasedepth($token);}
+ && ($#stack > -1)) {
+ &Apache::lonxml::error("Unbalanced tags in resource $stack['-1']");
+ pop @stack;pop @parstack;&decreasedepth($token);
+ }
if (exists $style_for_target{'/'."$token->[1]"}) {
@@ -175,8 +178,10 @@ sub recurse {
} elsif ($tokenpat->[0] eq 'E') {
#clear out any tags that didn't end
while ($tokenpat->[1] ne $innerstack[$#innerstack]
- && ($#innerstack > -1)) {pop @innerstack;pop @innerparstack;
- &decreasedepth($tokenpat);}
+ && ($#innerstack > -1)) {
+ &Apache::lonxml::error("Unbalanced tags in resource $innerstack['-1']");
+ pop @innerstack;pop @innerparstack;&decreasedepth($tokenpat);
+ }
$partstring = &callsub("end_$tokenpat->[1]",
$target, $tokenpat, \@innerparstack,
\@pat, $safeeval, $style_for_target);
@@ -249,6 +254,7 @@ sub increasedepth {
}
my $curdepth=join('_',@Apache::lonxml::depthcounter);
&Apache::lonxml::debug("s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n");
+#print "
s $Apache::lonxml::depth : $Apache::lonxml::olddepth : $curdepth : $token->[1]\n";
}
sub decreasedepth {
@@ -258,8 +264,13 @@ sub decreasedepth {
$#Apache::lonxml::depthcounter--;
$Apache::lonxml::olddepth=$Apache::lonxml::depth+1;
}
+ if ( $Apache::lonxml::depth < -1) {
+ &Apache::lonxml::error("Unbalanced tags in resource");
+ $Apache::lonxml::depth='-1';
+ }
my $curdepth=join('_',@Apache::lonxml::depthcounter);
&Apache::lonxml::debug("e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n");
+#print "
e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";
}
sub get_all_text {
@@ -327,7 +338,7 @@ sub handler {
my $request=shift;
my $target='web';
- $Apache::lonxml::debug=1;
+# $Apache::lonxml::debug=1;
if ($ENV{'browser.mathml'}) {
$request->content_type('text/xml');
} else {