Fix #3796: env.resolve_references() crashes when non-document node given

This commit is contained in:
Takeshi KOMIYA 2017-05-24 23:23:24 +09:00
parent 23d1edb203
commit c3eaadbaa2
3 changed files with 5 additions and 2 deletions

View File

@ -28,6 +28,7 @@ Bugs fixed
* #3772: 'str object' has no attribute 'filename'
* #3763: got epubcheck validations error if epub_cover is set
* #3779: 'ImportError' in sphinx.ext.autodoc due to broken 'sys.meta_path'
* #3796: env.resolve_references() crashes when non-document node given
Testing
--------

View File

@ -943,10 +943,9 @@ class BuildEnvironment(object):
try:
# set env.docname during applying post-transforms
self.temp_data['docname'] = docname
if hasattr(doctree, 'settings'):
doctree.settings.env = self
transformer = SphinxTransformer(doctree)
transformer.set_environment(self)
transformer.add_transforms(self.app.post_transforms)
transformer.apply_transforms()
finally:

View File

@ -85,6 +85,9 @@ class SphinxTransformer(Transformer):
def apply_transforms(self):
# type: () -> None
if isinstance(self.document, nodes.document):
if hasattr(self.document.settings, 'env') and self.env:
self.document.settings.env = self.env
Transformer.apply_transforms(self)
else:
# wrap the target node by document node during transforming