It looks like the way that we set up our custom parser in Bugzilla::Template::_init must set up a circular reference that we don't deal with properly. Instead of tracing down the circular reference, I discovered that Template Toolkit has supported an ENCODING parameter (at least since 2.15, that's as far back as I checked) but it's actually just not documented until later versions. (It existed in prior versions, though.) Looking over the code, all we have to do is set ENCODING => 'UTF-8' and we should be good to go.
Created attachment 401747 [details] [diff] [review] v1 Okay, I tested this and it works. To test it, add some unicode characters to index.html.tmpl, and then try compiling and loading it with and without the ENCODING argument.
Oh, actually, on further investigation, this is our entire memory leak. I'm going to leave the patch here, though. See bug 517650 for information on how I tracked this down.
Comment on attachment 401747 [details] [diff] [review] v1 Tested with french and japanese templates on 3.4.2. Works as expected. Great cleanup! r=LpSolit
tip: Checking in Bugzilla/Template.pm; /cvsroot/mozilla/webtools/bugzilla/Bugzilla/Template.pm,v <-- Template.pm new revision: 1.108; previous revision: 1.107 done Removing Bugzilla/Template/Parser.pm; /cvsroot/mozilla/webtools/bugzilla/Bugzilla/Template/Parser.pm,v <-- Parser.pm new revision: delete; previous revision: 1.1 done 3.4: Checking in Bugzilla/Template.pm; /cvsroot/mozilla/webtools/bugzilla/Bugzilla/Template.pm,v <-- Template.pm new revision: 188.8.131.52; previous revision: 184.108.40.206 done Removing Bugzilla/Template/Parser.pm; /cvsroot/mozilla/webtools/bugzilla/Bugzilla/Template/Attic/Parser.pm,v <-- Parser.pm new revision: delete; previous revision: 1.1 done