Fix conditional jump based on an uninitialized variable.

Valgrind warns about the jump in qfontconfigdatabase.cpp:522 based on
uint QFondDef::hintingPreference:2 property. Surprising thing is that
the property is initialized in the default constructor, so there should
not be an issue.

The warning disappear if the property is _not_ placed on a boundary of a
two words, or if bit field is fully initialized. So I suspect that only
one bit of the two was initialized properly.

I decide to implement both solutions because of a potential minor
performance improvement, during reading the property.

I still fail to say why the value was uninitialized, I believe that this
patch simply workarounds gcc bug or valgrind bug.

Change-Id: I2e87738f66a435ef6e30b3d2db6baa73da025426
Reviewed-by: Jiang Jiang <gzjjgod@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
This commit is contained in:
Jędrzej Nowacki 2012-11-02 13:59:04 +01:00 committed by The Qt Project
parent 8fb379dc8a
commit fb0f58f50f

View File

@ -73,7 +73,8 @@ struct QFontDef
: pointSize(-1.0), pixelSize(-1),
styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle),
weight(50), fixedPitch(false), style(QFont::StyleNormal), stretch(100),
ignorePitch(true), hintingPreference(QFont::PreferDefaultHinting)
hintingPreference(QFont::PreferDefaultHinting), ignorePitch(true),
fixedPitchComputed(0), reserved(0)
{
}
@ -93,8 +94,8 @@ struct QFontDef
uint style : 2;
uint stretch : 12; // 0-400
uint ignorePitch : 1;
uint hintingPreference : 2;
uint ignorePitch : 1;
uint fixedPitchComputed : 1; // for Mac OS X only
int reserved : 14; // for future extensions