MakeClass() generated macros change character set?


In trying to track down a seg-fault in analysis code I was trying to check if the data files containing TTrees were corrupt. Using a tree viewer seems to work correctly so I moved on to using MakeClass() to generate generic code to just display the data on the screen.

(My root file is here but its too big to attach, 9MB,: )

When I load the autogenerated .C file (LambdaMuDst.C) and run the sequence interactively:
LambdaMuDst t;
Everything looks fine but when I loop over 100 events

for (int i=0;i<100;i++) t.Show(i);

the character set in my terminal get reset to random special characters. It doesn’t seg-fault but it makes a mess out of my terminal.

Is this a sign that there is a problem in the file or could it be something with root or perhaps its on my side?

ubuntu system (Debian)
root v4-00-02
gcc 3.3.5
Same issue with v4-00-04 and gcc 3.3.2 on RH80.

Any advice would be greatly appreciated!



I have no problem processing your file with MakeClass from version 4.03.
See the files L.h and L.C in attachement.
It could be that with version 4.0 the code generated was not correct.
Please try the files in attachement

L.tar.gz (10.4 KB)

Hi Rene

Your tar.gz file only contained L.h - but I had a look and it was (except for L->LambdaMuDst) identical to mine and I got the same behaviour after modifying my .C file to use it.

My LambdaMuDst.C has ~ nothing in it so I guess the problem lies somewhere else. Just in case the L.C file does have additional content I have attached mine for comparison but I guess I need to look elsewhere to figure out whats happening.


L.C (1.38 KB)


There is indeed a problem when using Show when the tree is in MakeClass mode (was printing Char with %c instead of %d). This will be fixed shortly.