Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


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.

Context


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.