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 <aiji...@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>.


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to