From: Eric Niebler Date: Mon, 6 Nov 2017 19:42:48 +0000 (-0800) Subject: Value-initialize the Data union member of folly::Function X-Git-Tag: v2017.11.13.00~30 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=commitdiff_plain;h=d6a27b28486331975bb538ddce4213301d913a1f;hp=ad3fe1dd9d62659880c7d563cde21bde7e3e2326 Value-initialize the Data union member of folly::Function Summary: The Data field was not getting value-initialized, leading compilers to complain when value-initializing const folly::Function objects. Reviewed By: yfeldblum, ot Differential Revision: D6241712 fbshipit-source-id: 99ce7f6016f6e7d16b1cff7aa51b7bef53ec592d --- diff --git a/folly/Function.h b/folly/Function.h index b8a287dd..ec145688 100644 --- a/folly/Function.h +++ b/folly/Function.h @@ -529,7 +529,7 @@ class Function final : private detail::function::FunctionTraits { // invoking undefined behavior. Const-correctness is only violated when // `FunctionType` is a const function type (e.g., `int() const`) and `*this` // is the result of calling `constCastFunction`. - mutable Data data_; + mutable Data data_{}; Call call_{&Traits::uninitCall}; Exec exec_{&detail::function::uninitNoop}; diff --git a/folly/test/FunctionTest.cpp b/folly/test/FunctionTest.cpp index a062d933..34217a2c 100644 --- a/folly/test/FunctionTest.cpp +++ b/folly/test/FunctionTest.cpp @@ -1095,3 +1095,7 @@ TEST(Function, CtorWithCopy) { EXPECT_TRUE(noexcept(Function(lx))); EXPECT_FALSE(noexcept(Function(ly))); } + +TEST(Function, Bug_T23346238) { + const Function nullfun; +}