Passing string parameter to CallFunc?

Hello,

I’m trying to use the CallFunc interface. With integer parameter it works:

TH1D *h = new TH1D("h", "", 4, 0., 4.);
TObject *obj = h;

ClassInfo_t* clInfo = obj->IsA()->GetClassInfo();
CallFunc_t* callFunc = gInterpreter->CallFunc_Factory();

Long_t offset;
gInterpreter->CallFunc_SetFuncProto(callFunc, clInfo, "GetBinCenter", "int", &offset);

TInterpreter::CallFuncIFacePtr_t faceptr = gInterpreter->CallFunc_IFacePtr(callFunc);

int par0 = 1;
vector<void*> parameters = { &par0 };

double result = 0.;
faceptr.fGeneric(obj, parameters.size(), parameters.data(), &result);

printf("result = %f\n", result); // -> result = 0.5

However, I can’t figure out how to do it for string parameters - the code always leads to segfault:

TH1D *h = new TH1D("h", "", 4, 0., 4.);
TObject *obj = h;

ClassInfo_t* clInfo = obj->IsA()->GetClassInfo();
CallFunc_t* callFunc = gInterpreter->CallFunc_Factory();

Long_t offset;
gInterpreter->CallFunc_SetFuncProto(callFunc, clInfo, "SetName", "char*", &offset);

TInterpreter::CallFuncIFacePtr_t faceptr = gInterpreter->CallFunc_IFacePtr(callFunc);

char buf[] = "bla";
vector<void*> parameters = { &buf };

void *result = NULL;

faceptr.fGeneric(obj, parameters.size(), parameters.data(), result); // -> segmentation violation

I would be grateful for suggestions. Many thanks in advance!

There is really no one who can help me?

Try either

const char *buf = "bla"; vector<void*> parameters = { &buf };orchar buf[] = "bla"; vector<void*> parameters = { &(buf[0]) };

Cheers,
Philippe.