mirror of
https://github.com/vacp2p/boringssl.git
synced 2026-08-27 11:41:09 +00:00
NewZeroed was never actually necessary. We were performing value-initialization, which means that, if the default constructor were not user-provided, it does zero-initialization anyway. If the default constructor is user-provided, this changes and the user-provided constructor is responsible for initializing every field. NewZeroed looks like it saved this case, but it does not according to GCC. GCC believes that, for all types, a memset preceding a placement new can be deleted. Thus we can simply replace NewZeroed with New. We need to be very careful that, when we introduce a constructor to a type, we initialize the fields explicitly. This was always true in C++. Bug: 491512320 Change-Id: I8f7cba6afaffeb8baf5f1190c2f7590bfd459b0a Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/90667 Auto-Submit: David Benjamin <davidben@google.com> Reviewed-by: Rudolf Polzer <rpolzer@google.com> Commit-Queue: Rudolf Polzer <rpolzer@google.com>