include/rtl/string.hxx  |    1 +
 include/rtl/ustring.hxx |    1 +
 2 files changed, 2 insertions(+)

New commits:
commit e1af6fefa0f0b919ccdacc9edfbae034e6347d46
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Mon Jul 19 21:11:51 2021 +0200
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Mon Jul 19 22:47:36 2021 +0200

    offsetof is only guaranteed to work with standard layout types
    
    Change-Id: If9ba41a219d3c3b5bff838104b9a0df53030b8f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119181
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index f80dd7410da7..1f3120e7b4e5 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -129,6 +129,7 @@ private:
     static constexpr void assertLayout() {
         // These static_asserts verifying the layout compatibility with 
rtl_String cannot be class
         // member declarations, as offsetof requires a complete type, so defer 
them to here:
+        static_assert(std::is_standard_layout_v<OStringLiteral>);
         static_assert(offsetof(OStringLiteral, str.refCount) == 
offsetof(OStringLiteral, more.refCount));
         static_assert(offsetof(OStringLiteral, str.length) == 
offsetof(OStringLiteral, more.length));
         static_assert(offsetof(OStringLiteral, str.buffer) == 
offsetof(OStringLiteral, more.buffer));
diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx
index 2699c09ac03f..96bb504f77a8 100644
--- a/include/rtl/ustring.hxx
+++ b/include/rtl/ustring.hxx
@@ -110,6 +110,7 @@ private:
     static constexpr void assertLayout() {
         // These static_asserts verifying the layout compatibility with 
rtl_uString cannot be class
         // member declarations, as offsetof requires a complete type, so defer 
them to here:
+        static_assert(std::is_standard_layout_v<OUStringLiteral>);
         static_assert(offsetof(OUStringLiteral, str.refCount) == 
offsetof(OUStringLiteral, more.refCount));
         static_assert(offsetof(OUStringLiteral, str.length) == 
offsetof(OUStringLiteral, more.length));
         static_assert(offsetof(OUStringLiteral, str.buffer) == 
offsetof(OUStringLiteral, more.buffer));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to