Merge pull request #5246 from myhloli/dev

feat: prevent circular inheritance in DOCX style processing by tracking visited styles
This commit is contained in:
Xiaomeng Zhao
2026-07-08 15:44:59 +08:00
committed by GitHub
+14
View File
@@ -1947,7 +1947,21 @@ class DocxConverter:
style = style_obj
result = None
visited_styles = set()
while style is not None:
style_element = getattr(style, "_element", None)
style_id = getattr(style, "style_id", None)
style_type = getattr(style, "type", None)
# DOCX 可能存在 basedOn 自引用或环形引用,记录已访问样式避免继承链死循环。
style_marker = (
id(style_element) if style_element is not None else id(style),
style_type,
style_id,
)
if style_marker in visited_styles:
break
visited_styles.add(style_marker)
font = getattr(style, "font", None)
if font is not None:
if attr_name == "underline":