> The tool is not perfect, so assess each report carefully. I also get a warning on almost every C++ function I've written, because I use the following code to handle exceptions:
SEXP output=PROTECT(allocVector(...)); try { // do something that might raise an exception } catch (std::exception& e) { UNPROTECT(1); throw; // break out of this part of the function } UNPROTECT(1); return output; Presumably the check doesn't account for transfer of control to the catch block. I find that R itself is pretty good at complaining about stack imbalances during execution of tests, examples, etc. > 'My' packages > (Rsamtools, DirichletMultinomial) had several false positives (all > associated with use of an attribute of a protected SEXP), one subtle > problem (a symbol from a PROTECT'ed package name space; the symbol could > in theory be an active binding and the value obtained not PROTECTed by > the name space), and a genuine bug > > tag = NEW_CHARACTER(n); > for (int j = 0; j < n; ++j) > SET_STRING_ELT(tag, j, NA_STRING); > if ('A' == aux[0]) { > buf_A = R_alloc(2, sizeof(char)); # <<- bug > buf_A[1] = '\0'; > } > ... > SET_VECTOR_ELT(tags, i, tag); # PROTECT tag, too late! I assume the bug refers to the un-PROTECT'd NEW_CHARACTER here - the R_alloc call looks okay to me... Cheers, Aaron _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel