Fix UBSAN failure in RangeTest.cpp with libstdc++-v4.9
authorYedidya Feldblum <yfeldblum@fb.com>
Sat, 9 Dec 2017 17:47:06 +0000 (09:47 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Sat, 9 Dec 2017 17:51:17 +0000 (09:51 -0800)
Summary:
[Folly] Fix UBSAN failure in `RangeTest.cpp` with `libstdc++-v4.9`.

The implementation of `std::array` in `libstdc++-v4.9` has undefined behavior in the case of the zero-length array - dereferencing (but immediately taking the address again) of `nullptr`. This is fixed in `libstdc++-v5`.

Reviewed By: ot

Differential Revision: D6528614

fbshipit-source-id: 26be6bdc28d9e6dc6e6293a4d4ecffd769c01413

folly/test/RangeTest.cpp

index dbe8d88fa2b6fa216c8207696127138ddcd413c4..b1298cacec7f659466ce85bdd9f990d169bd9338 100644 (file)
@@ -1201,7 +1201,7 @@ TEST(CRangeFunc, StdArrayZero) {
   auto const numArrayRange = crange(numArray);
   EXPECT_TRUE(
       (std::is_same<int const*, decltype(numArrayRange)::iterator>::value));
   auto const numArrayRange = crange(numArray);
   EXPECT_TRUE(
       (std::is_same<int const*, decltype(numArrayRange)::iterator>::value));
-  EXPECT_THAT(numArrayRange, testing::ElementsAreArray(numArray));
+  EXPECT_THAT(numArrayRange, testing::IsEmpty());
 }
 
 TEST(CRangeFunc, Collection) {
 }
 
 TEST(CRangeFunc, Collection) {