[Libreoffice-commits] core.git: initialize new member variables

Stephan Bergmann sbergman at redhat.com
Tue Jan 12 00:20:45 PST 2016


On 01/11/2016 06:29 PM, Caolán McNamara wrote:
> commit c93a43c0c9113bc1c787fe6b3c5e58a8bfd80be0
> Author: Caolán McNamara <caolanm at redhat.com>
> Date:   Mon Jan 11 17:08:39 2016 +0000
>
>      initialize new member variables
>
>      Change-Id: I3839bc134b337ccb7cfdb2ee70524e4721c8f83c
>
> diff --git a/vcl/source/font/fontattributes.cxx b/vcl/source/font/fontattributes.cxx
> index be3ab68..49060f0 100644
> --- a/vcl/source/font/fontattributes.cxx
> +++ b/vcl/source/font/fontattributes.cxx
> @@ -93,7 +93,18 @@ bool FontAttributes::CompareDeviceIndependentFontAttributes(const FontAttributes
>   }
>
>   FontAttributes::FontAttributes()
> -    : mnWidth ( 0 )
> +    : meWeight(WEIGHT_DONTKNOW)
> +    , meItalic(ITALIC_DONTKNOW)
> +    , meFamily(FAMILY_DONTKNOW)
> +    , mePitch(PITCH_DONTKNOW)
> +    , meWidthType(WIDTH_DONTKNOW)
> +    , mbSymbolFlag(false)
> +    , mnQuality(0)
> +    , mbOrientation(false)
> +    , mbDevice(false)
> +    , mbSubsettable(false)
> +    , mbEmbeddable(false)
> +    , mnWidth ( 0 )
>       , mnOrientation( 0 )
>       , mnAscent( 0 )
>       , mnDescent( 0 )
[...]

Tools like UBSan or Valgrind's memcheck started to complain about reads 
of uninitialized members after a series of commits that merged 
font-related structs in VCL together.  What looked fishy is that those 
members had not been default-initialized in the original structs, the 
number of setter calls had not changed, and yet the code started to grow 
uninitialized reads of the members.  Without a clear understanding of 
what was going on, we were reluctant to blindly default-initialize those 
members now, as it might hide problems (at least from the eyes of UBSan 
and Valgrind) instead of fixing them.

Now, as I understand, Chris is going to revert those merges, as he came 
to the conclusion that they went in the wrong direction after all, and I 
assume that will obsolete the above potentially problematic commit anyway.


More information about the LibreOffice mailing list