GNU bug report logs -
#8215
possibly uninitialized variable lower_xoff in produce_glyphless_glyph
Previous Next
Reported by: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Wed, 9 Mar 2011 22:01:01 UTC
Severity: normal
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
I found this problem by compiling Emacs with GCC's -Wuninitialized flag.
The following code in the Emacs trunk src/xdisp.c's
produce_glyphless_glyph function might be using an uninitialized
variable:
if (base_width >= width)
{
/* Align the upper to the left, the lower to the right. */
it->pixel_width = base_width;
lower_xoff = base_width - 2 - metrics_lower.width;
}
else
{
/* Center the shorter one. */
it->pixel_width = width;
if (metrics_upper.width >= metrics_lower.width)
lower_xoff = (width - metrics_lower.width) / 2;
else
upper_xoff = (width - metrics_upper.width) / 2;
}
...
if (it->glyph_row)
append_glyphless_glyph (it, face_id, for_no_font, len,
upper_xoff, upper_yoff,
lower_xoff, lower_yoff);
The last call uses lower_xoff, but the last "else" does not initialize
lower_xoff. The bug cannot occur if it->glyph_row is NULL, but I
don't see why that would necessarily be. So I'm filing a bug report
so that someone who is more expert in this code can take a look at it.
In the meantime, I plan to work around the problem by initializing
lower_xoff to 0, with a FIXME explaining the situation: this shouldn't
introduce a bug, because at worst it will replace undefined behavior
with defined behavior.
I'm CC'ing this to Kenichi Handa, who committed the code in question.
This bug report was last modified 4 years and 45 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.