From: Marcus Holland-Moritz Date: Tue, 17 May 2016 20:08:17 +0000 (-0700) Subject: folly: fbvector: ubsan: don't call memcpy() with nullptr args if size == 0 X-Git-Tag: 2016.07.26~228 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=1072a897f5c17f2d13de16450059baa81c61d525;p=folly.git folly: fbvector: ubsan: don't call memcpy() with nullptr args if size == 0 Reviewed By: meyering, luciang Differential Revision: D3310683 fbshipit-source-id: c86471d54062b2f3455f15fb73340fac486d9e44 --- diff --git a/folly/FBVector.h b/folly/FBVector.h index fb611e56..036882a4 100644 --- a/folly/FBVector.h +++ b/folly/FBVector.h @@ -522,7 +522,9 @@ private: static void S_uninitialized_copy_bits(T* dest, const T* first, const T* last) { - std::memcpy((void*)dest, (void*)first, (last - first) * sizeof(T)); + if (last != first) { + std::memcpy((void*)dest, (void*)first, (last - first) * sizeof(T)); + } } static void @@ -530,7 +532,9 @@ private: std::move_iterator last) { T* bFirst = first.base(); T* bLast = last.base(); - std::memcpy((void*)dest, (void*)bFirst, (bLast - bFirst) * sizeof(T)); + if (bLast != bFirst) { + std::memcpy((void*)dest, (void*)bFirst, (bLast - bFirst) * sizeof(T)); + } } template