WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
150235
SameSizeAs* structs wrongly assume sizeof(ptr)==sizeof(std::unique_ptr)
https://bugs.webkit.org/show_bug.cgi?id=150235
Summary
SameSizeAs* structs wrongly assume sizeof(ptr)==sizeof(std::unique_ptr)
R. Sharma
Reported
2015-10-16 09:54:23 PDT
Hi, In regard to all the static assertions, to check the sizes of the data-structures using SameSizeAs* structs, it is wrongly assumed, that sizeof (std::unique_ptr) is same as sizeof (pointer) for all compilers. Therefore, I would suggest to list them separately while computing the sizes. To give an example: In WebCore\dom\ElementRareData.cpp The structure should look like: struct SameSizeAsElementRareData : NodeRareData { short indices[2]; unsigned bitfields; RegionOversetState regionOversetState; LayoutSize sizeForResizing; IntSize scrollOffset; // CHANGE BEGINS HERE . Earlier it was :void* pointers[7]; void* pointers[4]; std::unique_ptr<DatasetDOMStringMap> pointer2; std::unique_ptr<ClassList> pointer3; std::unique_ptr<NamedNodeMap> pointer4; // CHANGE ENDS HERE }; Making the above change, works perfectly for us without throwing any compile-time assert at: static_assert(sizeof(ElementRareData) == sizeof(SameSizeAsElementRareData), "ElementRareData should stay small"); Thanks, Rupali
Attachments
Add attachment
proposed patch, testcase, etc.
Anders Carlsson
Comment 1
2015-10-19 11:00:19 PDT
On which platform is the size of a unique_ptr not the same as the size as a raw pointer?
R. Sharma
Comment 2
2015-10-22 15:27:16 PDT
Hi Anders, We have our first party platform which uses its own fork of Clang where the sizes are different.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug