Edmond Offermann <edmondoffermann@yahoo.com> writes: > Hi Mathieu, > > I guess scoping issues in CINT . Bring the TCut > declarations out of the loop: > > void start() > { > int max=30; > int iterator=0; > TCut cut1; > TCut cut2; > TCut cut; > while(iterator!=max) > { > if(iterator<10 || iterator>20) // <--- ********* > { > cout<<"hello: "<<iterator<<endl; > TString str_cut1="detCEL==1"; > cut1=str_cut1; > TString str_cut2="sampCEL==2"; > cut2=str_cut2; > cut = cut1 && cut2; // <--- ********* > } > ++iterator; > } > } > Hi Eddy, Mathieu, I agree that it is better to move the declarations above the loop. However it does not solve the problem in this particular case (if you load the file via .L and then run start()). It looks like an optimization error in Cint. The segmentation violation occurs for iterator==11 in pcode.c:1685 where G__p_tempbuf is freed (I was running Root in valgrind). It does not happen if you run with .O0 or if you rewrite the loop to use for statement instead of while. cheers Jiri
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET