diff --git a/bindings/pyroot/src/Converters.cxx b/bindings/pyroot/src/Converters.cxx index 7d944867160d4d9317c73a5f8679d1513c0156e1..5dcdff56f3019a2655576f3013c7f4c332ffe0a3 100644 --- a/bindings/pyroot/src/Converters.cxx +++ b/bindings/pyroot/src/Converters.cxx @@ -504,7 +504,7 @@ Bool_t PyROOT::TCStringConverter::SetArg( // set the value and declare success if ( func ) - gInterpreter->CallFunc_SetArg( func, reinterpret_cast< Long_t >( fBuffer.c_str() ) ); + gInterpreter->CallFunc_SetArg( func, (Long_t)fBuffer.c_str() ); return kTRUE; } diff --git a/bindings/pyroot/src/RootWrapper.cxx b/bindings/pyroot/src/RootWrapper.cxx index 2cec9a9efefad352fdabc5ab0392ebbec3584985..ec58a48a40902c7500b42cd25a6e100ace01da54 100644 --- a/bindings/pyroot/src/RootWrapper.cxx +++ b/bindings/pyroot/src/RootWrapper.cxx @@ -230,8 +230,15 @@ int PyROOT::BuildRootClassDict( const TScopeAdapter& klass, PyObject* pyclass ) // special case trackers Bool_t setupSetItem = kFALSE; - Bool_t isConstructor = - TClassEdit::ShortType( mtName.c_str(), TClassEdit::kDropAlloc ) == clName; + // CLING WORKAROUND -- + Bool_t isConstructor = kFALSE; + if ( clName == "string" ) { + isConstructor = mtName == "basic_string<char>"; + } else { + // -- CLING WORKAROUND + isConstructor = + TClassEdit::ShortType( mtName.c_str(), TClassEdit::kDropAlloc ) == clName; + } // filter empty names (happens for namespaces, is bug?) if ( mtName == "" ) diff --git a/bindings/pyroot/src/TConstructorHolder.cxx b/bindings/pyroot/src/TConstructorHolder.cxx index 2c72d8bdffadaf5c3eeb153be1bf007c22d33fcc..aa99743c8dbd25dc57529635dff067d347841256 100644 --- a/bindings/pyroot/src/TConstructorHolder.cxx +++ b/bindings/pyroot/src/TConstructorHolder.cxx @@ -86,8 +86,10 @@ PyObject* PyROOT::TConstructorHolder::operator()( // CLING WORKAROUND -- // Due to #100389, the constructor may not be a valid method. This happens if // there is no (default) contructor, so just return a right-size bit of memory. - if ( ! address ) + if ( ! address ) { + PyErr_Clear(); address = (Long_t)klass->New(); + } // -- END CLING WORKAROUND // done with filtered args