Skip to content
Snippets Groups Projects
Commit c1026e00 authored by Axel Naumann's avatar Axel Naumann
Browse files

ROOT-7825: dereference address for "*&".

parent 96163681
No related branches found
No related tags found
No related merge requests found
......@@ -1021,7 +1021,7 @@ Bool_t PyROOT::TCppObjectPtrConverter::SetArg(
// set pointer (may be null) and declare success
para.fValue.fVoidp = &((ObjectProxy*)pyobject)->fObject;
para.fTypeCode = 'p';
para.fTypeCode = fIsReference ? 'V' : 'p';
return kTRUE;
}
......@@ -1372,7 +1372,7 @@ PyROOT::TConverter* PyROOT::CreateConverter( const std::string& fullType, Long_t
else
// -- CLING WORKAROUND
if ( cpd == "**" || cpd == "*&" || cpd == "&*" )
result = new TCppObjectPtrConverter( klass, control );
result = new TCppObjectPtrConverter( klass, control, cpd[1] == '&');
else if ( cpd == "*" && size <= 0 )
result = new TCppObjectConverter( klass, control );
else if ( cpd == "&" )
......
......@@ -209,12 +209,16 @@ namespace PyROOT {
class TCppObjectPtrConverter : public TCppObjectConverter {
public:
using TCppObjectConverter::TCppObjectConverter;
TCppObjectPtrConverter( Cppyy::TCppType_t klass, Bool_t keepControl, Bool_t isReference) :
TCppObjectConverter(klass, keepControl),
fIsReference(isReference) {}
public:
virtual Bool_t SetArg( PyObject*, TParameter&, TCallContext* ctxt = 0 );
virtual PyObject* FromMemory( void* address );
virtual Bool_t ToMemory( PyObject* value, void* address );
protected:
Bool_t fIsReference;
};
class TCppObjectArrayConverter : public TCppObjectConverter {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment