summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texnodes.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texnodes.c')
-rw-r--r--source/luametatex/source/tex/texnodes.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texnodes.c b/source/luametatex/source/tex/texnodes.c
index 0134eb419..ab2601a43 100644
--- a/source/luametatex/source/tex/texnodes.c
+++ b/source/luametatex/source/tex/texnodes.c
@@ -1800,6 +1800,24 @@ halfword tex_list_node_mem_usage(void)
(actually for each node tyep I guess).
*/
+extern void tex_change_attribute_register(halfword a, halfword id, halfword value)
+{
+ if (eq_value(id) != value) {
+ if (is_global(a)) {
+ int i;
+ for (i = (lmt_save_state.save_stack_data.ptr - 1); i >= 0; i--) {
+ if (save_type(i) == attribute_list_save_type) {
+ delete_attribute_reference(save_value(i));
+ save_value(i) = attribute_cache_disabled;
+ }
+ }
+ } else {
+ delete_attribute_reference(current_attribute_state);
+ }
+ set_current_attribute_state(attribute_cache_disabled);
+ }
+}
+
inline static halfword tex_aux_new_attribute_list_node(halfword count)
{
halfword r = tex_get_node(attribute_node_size);