1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-10-05 08:27:22 +03:00

Avoid endless loops on direct cycles

This commit is contained in:
Guillaume Ayoub 2019-03-07 11:40:07 +01:00
parent 4dd67f9a73
commit b074803070

View File

@ -147,8 +147,11 @@ def _resolve_var(computed, variable_name, default):
and len(computed_value) == 1):
var_function = check_var_function(computed_value[0])
if var_function:
variable_name, default = var_function[1]
computed_value = computed.get(variable_name, default)
new_variable_name, new_default = var_function[1]
if new_variable_name == variable_name:
computed_value = default
break
computed_value = computed.get(new_variable_name, new_default)
else:
break
return computed_value
@ -218,7 +221,10 @@ def compute(element, pseudo_type, specified, computed, parent_style,
if value and isinstance(value, tuple) and value[0] == 'var()':
variable_name, default = value[1]
computed_value = _resolve_var(computed, variable_name, default)
new_value = PROPERTIES[name.replace('_', '-')](computed_value)
if computed_value is None:
new_value = None
else:
new_value = PROPERTIES[name.replace('_', '-')](computed_value)
# See https://drafts.csswg.org/css-variables/#invalid-variables
if new_value is None: