TStreamerInfo::New needs to use the CollectionProxy::New#9581
TStreamerInfo::New needs to use the CollectionProxy::New#9581pcanal merged 1 commit intoroot-project:masterfrom
Conversation
This fixes issue root-project#9543 In the issue root-project#9543, the unusual situation is the combination of: * there is (intentionally) no dictionary for `std::map<int,std::vector<int>>` * consequently we use an "emulated collection proxy" for that collection * there is (unintentional due to external config) interpreter information/ClassInfo for `std::map<int,std::vector<int>>` The crux of the issue root-project#9542 is: * TClass::fSizeof info prefers the information from the CollectionProxy * TStreamerInfo::fSize is set to the value of TClass::fSizeOf * TClass:New prefers the constructor from the interpreter * TStreamerInfo::New was using TClass::New for that case * On the failing platform, the `sizeof(std::map<int,std::vector<int>>)` is larger than the size of the emulated collection. Since the I/O and TStreamerInfo uses the TCollection proxy and all of TStreamerInfo needs to prefer the information from the collection proxy (including the 'sizeof'). To fix root-project#9542 the solution is for * TStremearInfo::New to prefer/use TCollectionProxy::New over TClass::New (i.e. the interpreted constructor in this particular case).
|
Starting build on |
|
Build failed on ROOT-ubuntu2004/soversion. Failing tests: |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Failing tests: |
|
Build failed on ROOT-performance-centos8-multicore/default. Warnings:
Failing tests: |
|
Build failed on mac11/cxx17. Failing tests:
And 5 more |
|
Build failed on ROOT-debian10-i386/cxx14. Failing tests: |
|
Build failed on mac1015/python3. Failing tests: |
|
@phsft-bot build |
|
Starting build on |
|
Build failed on mac11/cxx17. |
|
@phsft-bot build only on mac11/cxx17 |
|
Starting build on |
|
@phsft-bot build just on mac11/cxx17 |
|
Starting build on |
|
Build failed on mac11/cxx17. Failing tests: |
|
The mac11/cxx17 failures are pre-existing (issues with template instantiations in cling) |
|
Thanks @hahnjo |
|
Starting build on |
|
Build failed on ROOT-ubuntu16/nortcxxmod. Errors:
|
|
Build failed on ROOT-performance-centos8-multicore/default. Errors:
|
|
Build failed on mac1015/python3. Errors:
|
|
Build failed on ROOT-debian10-i386/cxx14. Errors:
|
|
Build failed on mac11/cxx17. Errors:
|
|
Build failed on ROOT-ubuntu2004/soversion. Errors:
|
|
Build failed on windows10/cxx14. Errors:
|
This fixes issue #9543
In the issue #9543, the unusual situation is the combination of:
std::map<int,std::vector<int>>std::map<int,std::vector<int>>The crux of the issue #9543 is:
sizeof(std::map<int,std::vector<int>>)is larger than the size of the emulated collection.Since the I/O and TStreamerInfo uses the TCollection proxy and all of TStreamerInfo needs to prefer the information from the collection proxy (including the 'sizeof'). To fix #9543 the solution is for