Fixed #19510 -- Race condition in template loading.

Thanks Kronuz and regebro.
This commit is contained in:
Aymeric Augustin 2013-03-17 23:56:07 +01:00
parent 0df8ff3dbe
commit 68905695b8
1 changed files with 4 additions and 2 deletions

View File

@ -43,7 +43,9 @@ class Loader(BaseLoader):
# If template directories were specified, use a hash to differentiate # If template directories were specified, use a hash to differentiate
key = '-'.join([template_name, hashlib.sha1(force_bytes('|'.join(template_dirs))).hexdigest()]) key = '-'.join([template_name, hashlib.sha1(force_bytes('|'.join(template_dirs))).hexdigest()])
if key not in self.template_cache: try:
template = self.template_cache[key]
except KeyError:
template, origin = self.find_template(template_name, template_dirs) template, origin = self.find_template(template_name, template_dirs)
if not hasattr(template, 'render'): if not hasattr(template, 'render'):
try: try:
@ -55,7 +57,7 @@ class Loader(BaseLoader):
# of the actual template that does not exist. # of the actual template that does not exist.
return template, origin return template, origin
self.template_cache[key] = template self.template_cache[key] = template
return self.template_cache[key], None return template, None
def reset(self): def reset(self):
"Empty the template cache." "Empty the template cache."