ENH: extend size of NullObject for safer reinterpret cast
- previously had a single pointer/value zeros (8 bytes), this meant that the reinterpret cast to a List would yield a reference that could be unsafe under certain conditions. Eg, const labelList& myList = labelList::null(); Info<< myList.size() << nl; // OK since size is the first parameter SubList<label>(myList, 0); // Unsafe The SubList usage is unsafe since it passes in pointer and size into the underlying UList. However, the pointer from the labelList::null() will be whatever happens to be around in memory immediately after the NullObject singleton. This is mostly not a problem if the List size is always checked, but does mean that the data pointer is rather dubious. - Increase the size of the nullObject singleton to 32 bytes of zeros to ensure that most reinterpret casting will not result in objects that reference arbitrary memory. The 32-byte data size is rather arbitrary, but covers most basic containers.
Please register or sign in to comment