textbtree: Initialize to zero the tags counting array

We're using the tag contents array to count the number of invisible tags
set but we always increase it without being initialized.

This may lead to unexpected behavior when traversing them and it's
causing a reliable failure in the textiter tests under s390x.

So, memset that area content to 0 once allocated. It's not needed to do
the same for the tags themselves as we always assign them.

 Conditional jump or move depends on uninitialised value(s)
   at 0x4CFAA00: _gtk_text_btree_char_is_invisible (gtktextbtree.c:2569)
   by 0x4B8A1BB: find_visible_by_log_attrs (gtktextiter.c:3244)
   by 0x10E93D: check_backward_visible_word_start (textiter.c:484)
   by 0x10E93D: test_visible_word_boundaries (textiter.c:523)
   by 0x533288F: g_test_run_suite (in /usr/lib/s390x-linux-gnu/libglib-2.0.so.0)
   by 0x53328E7: g_test_run (in /usr/lib/s390x-linux-gnu/libglib-2.0.so.0)
   by 0x109CC1: main (textiter.c:807)
This commit is contained in:
Marco Trevisan (Treviño) 2021-07-09 03:34:40 +02:00 committed by Marco Trevisan (Treviño)
parent 6818eee859
commit 10bdf8c645

View File

@ -2483,6 +2483,8 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter)
tagCnts = g_alloca (sizeof (int) * numTags);
tags = g_alloca (sizeof (GtkTextTag *) * numTags);
memset (tagCnts, 0, sizeof (int) * numTags);
/*
* Record tag toggles within the line of indexPtr but preceding
* indexPtr.