On 12 Jan 2016, at 7:20 PM, Stephan Bergmann <sbergman@redhat.com> wrote:
On 01/11/2016 06:29 PM, Caolán McNamara wrote:
commit c93a43c0c9113bc1c787fe6b3c5e58a8bfd80be0
Author: Caolán McNamara <caolanm@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.
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.