Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-8273

TClass::Size() vs TEmulatedCollectionProxy::Sizeof()

    XMLWordPrintable

Details

    • Bug
    • Status: Open (View Workflow)
    • Critical
    • Resolution: Unresolved
    • None
    • None
    • Core Libraries
    • None
    • Linux

    Description

      From ROOT-8239:

      root [0] sizeof(std::map<int,std::string>)
      (unsigned long) 48
      root [2] TClass::GetClass("std::map<int,std::string>")->GetClassSize()
      (Int_t) 24

      The 24 is coming from

      TEmulatedCollectionProxy::Sizeof (this=0x90b160) at include/TEmulatedCollectionProxy.h:78
      78	   virtual UInt_t Sizeof() const           {  return sizeof(Cont_t);     }

      called from

      #0  TClass::Init (this=0x90f000, name=0xe43938 "map<int,string>", cversion=6, typeinfo=0x0, isa=0x0, dfil=0x0, ifil=0x0, dl=-1, il=-1, givenInfo=0x0, 
          silent=false) at src/core/meta/src/TClass.cxx:1543
      #1  0x00007ffff7c1e53a in TClass::TClass (this=0x90f000, name=0xe43938 "map<int,string>", cversion=6, silent=false)
          at src/core/meta/src/TClass.cxx:1124
      #2  0x00007ffff045b337 in TCling::GenerateTClass (this=0x480a70, classname=0xe43938 "map<int,string>", emulation=true, silent=false)
          at src/core/meta/src/TCling.cxx:3607
      #3  0x00007ffff7c25d95 in TClass::GetClass (name=0x7ffff7fbe000 "std::map<int,std::string>", load=true, silent=false)
          at src/core/meta/src/TClass.cxx:3013

      We should be able to (or must, really) do better than that, esp as PyROOT relies on that number and we do have interpreter info for this class.

      Attachments

        Issue Links

          Activity

            People

              pcanal Philippe Canal
              axel Axel Naumann
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated: