Much thanks. I was protecting the pointer and not what it was pointing to. The reason I wasn't protecting kxp,usar was because the R external manual mentioned
5.9.1 Handling the effects of garbage collection "Protecting an R object automatically protects all the R objects pointed to in the corresponding SEXPREC, for example all elements of a protected list are automatically protected." Before protecting res in the correct manner, I tried a) not protecting usar, kxp b) protecting usar,kxp In (a), R hung, i.e nothing happened, just got stuck in a call, with (b) I succesffuly ran it 4MM times. Have I mis-understood the 5.9.1? Thanks for your inputs. Saptarshi Guha On Sun, Mar 29, 2009 at 10:02 PM, Martin Morgan <mtmor...@fhcrc.org> wrote: >> // kxp and usar are two SEXP's which have not been protected >> SEXP res >> PROTECT(res); >> res= allocVector(VECSXP, 2); > > usually you would not want to allocate when there are unprotected > variables, so kxp, usar should be protected before this... > > You want to protect the result of the allocation, not the location of > the variable, i.e., > > PROTECT(res = allocVector(VECSXP, 2)); > >> SET_VECTOR_ELT(res,0,kxp); >> SET_VECTOR_ELT(res,1,usar); >> >> names=allocVector(VECSXP,2);PROTECT(names); //A >> SET_VECTOR_ELT(names, 0, mkChar("key")); //A >> SET_VECTOR_ELT(names, 1, mkChar("value")); //A >> setAttrib(res, R_NamesSymbol,names); //A >> UNPROTECT(2); >> return(res); >> >> >> Saptarshi Guha >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > > -- > Martin Morgan > Computational Biology / Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N. > PO Box 19024 Seattle, WA 98109 > > Location: Arnold Building M2 B169 > Phone: (206) 667-2793 > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel