[ROOT] Limitation: Precompiled function can not get pointer to interpreted function as argument

From: Jacek M. Holeczek (holeczek@us.edu.pl)
Date: Tue Dec 05 2000 - 15:57:26 MET


Hi,
I've found the following problems :
	1. as I already complained my "RKSTP(n, h, x, y, sub1, w)" doesn't
	   work (precomplied function RKSTP can not get pointer to
	   interpreted function sub1) - there was NO such problem with
	   CINT/ROOT as of some versions before
	2. I can "overcome" this stupidity just by saying "RKSTP(n, h, x,
	   y, (void*)sub1, w);" - this works well. Only once, however.
	   The first call to G__isinterpretedp2f returns properly
	   G__INTERPRETEDFUNC, the next call unfortunately returns
	   G__UNKNOWNFUNC !!!
	3. I cannot convince G__CallFunc to pass the reference (Double_t &X).
	   In case of a pointer "Y" I can simply say "func.SetArg(((long)Y))".
	   If I say "func.SetArg(((long)&X))", the function gets the
	   reference to somewhere in "para.*", not the original reference
	   to "X". This happens in all cases (G__INTERPRETEDFUNC,
	   G__BYTECODEFUNC,G__COMPILEDINTERFACEMETHOD) - can I somehow
	   convince SetArg to provide the original reference to "X" ?
	4. byte compiler makes problems - if I ".L test.cxx++" it creates
	   and loads the "test.so", but if I try to use the resulting code
	   afterwards, I get "segmentation violation" when I ".q" from
	   root (problems in free()). If I start new root.exe, load the
	   resulting "test.so" and use it, everything works without core
	   dumps.
Thanks in advance,
Jacek.
P.S. Root is 2.25/03 15 September 2000, RH Linux 6.1/i386. Jacek.



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:38 MET