[R-pkg-devel] [CRAN-pretest-archived] CRAN Submission NMRphasing 1.0.6
Nice spotting! Just for fun, I just asked chatgpt if there were any other problems in that code. It spotted 3, but not the one you found. Two of them were definitely bogus, but this one might not be: On line 471 kmax is used, but it may not be initialized. Duncan Murdoch
On 2024-12-17 5:15 a.m., Ivan Krylov via R-package-devel wrote:
Dear Aixiang, Welcome to R-package-devel! ? Tue, 17 Dec 2024 09:47:26 +0000 Aixiang Jiang <aijiang at bccrc.ca> ?????:
I am really confused by the error, which did not happen in the previous versions. Since I have not changed my code at all, the possible reason is that the external function is changed.
That's right, you've found a bug in the MassSpecWavelet package. It's been introduced more than two years ago: https://code.bioconductor.org/browse/MassSpecWavelet/commit/ea0f727ffc391fa2643f858844836d8297742433 The code finds out the length of the vector and a pointer to the start of its data:
double *x;
R_xlen_t xlength = Rf_length(s_x);
x = REAL(s_x);
Later, the code tries to limit the offset into the array...
i2 = i2 >= xlength ? xlength : i2;
...and accesses the data at this offset:
if (xmax > x[i2] && xmax > x[j-1]) {
Unfortunately, it is an error to access data at i2 equal to xlength. The correct maximum for i2 must be xlength-1, the last valid element of x. Try reporting this to the maintainer at <https://support.bioconductor.org/> or at <http://github.com/zeehio/MassSpecWavelet/issues>.