Skip to content
  • Mark OLESEN's avatar
    ENH: extend size of NullObject for safer reinterpret cast · eaa3da72
    Mark OLESEN authored
    - 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.
    eaa3da72