When a plugin implements the (deprecated) endRenderingHander() and calls
Func::renderText() in it, verbatim blocks stored in the global variable {session}->{_removed}
are lost. Making the blocks map local to getRenderedVersion() cures the symptoms again.
--- lib/TWiki/Render.pm (revision 7418)
+++ lib/TWiki/Render.pm (working copy)
@@ -987,9 +987,10 @@
my $removedComments = {};
my $removedScript = {};
my $removedHead = {};
+ my $verbatims = {};
$text = $this->takeOutBlocks( $text, 'finished_rendering', $session->{_removed} );
- $text = $this->takeOutBlocks( $text, 'verbatim', $session->{_removed} );
+ $text = $this->takeOutBlocks( $text, 'verbatim', $verbatims );
$text = $this->takeOutProtected( $text, qr/<\?([^?]*)\?>/s,
$removedComments );
@@ -1220,7 +1221,7 @@
$plugins->endRenderingHandler( $text );
# replace verbatim with pre in the final output
- $this->putBackBlocks( \$text, $session->{_removed}, 'verbatim', 'pre', \&verbatimCallBack );
+ $this->putBackBlocks( \$text, $verbatims, 'verbatim', 'pre', \&verbatimCallBack );
$this->putBackBlocks( \$text, $session->{_removed}, 'finished_rendering', '');
$text =~ s|\n?<nop>\n$||o; # clean up clutch
But I am not sure if this is the right fix.
(Don't recommend not to do that.)
it might take a little while, but i'll look into it

-- SD
svn:7446 -- SD