Message-ID: <YQBPR0101MB504562A1A91E9F36409E0BDBC6042@YQBPR0101MB5045.CANPRD01.PROD.OUTLOOK.COM>
Date: 2024-12-17T21:33:34Z
From: Aixiang Jiang
Subject: [R-pkg-devel] [CRAN-pretest-archived] CRAN Submission NMRphasing 1.0.6
In-Reply-To: <4aed0b68-3da8-463d-ad86-a428ba6b3998@gmail.com>
Thank you - Duncan!
I ended up revising the C functions and converted into R functions, which are then included in my own package.
Best,
Aixiang
________________________________
From: Duncan Murdoch <murdoch.duncan at gmail.com>
Sent: Tuesday, December 17, 2024 6:05 AM
To: Ivan Krylov <ikrylov at disroot.org>; Aixiang Jiang <aijiang at bccrc.ca>
Cc: r-package-devel at r-project.org <r-package-devel at r-project.org>
Subject: Re: [R-pkg-devel] [CRAN-pretest-archived] CRAN Submission NMRphasing 1.0.6
CAUTION: EXTERNAL EMAIL. Verify both the sender's email and name. Avoid links/attachments unless expected. Report any suspicious message by forwarding it as an attachment to spammail at bccrc.ca
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>.
>
[[alternative HTML version deleted]]