From hin-tak.leung at cimr.cam.ac.uk  Fri Jan 11 16:17:54 2008
From: hin-tak.leung at cimr.cam.ac.uk (Hin-Tak Leung)
Date: Fri, 11 Jan 2008 15:17:54 +0000
Subject: [Rd] do_gsub (PR#10540)
In-Reply-To: <20080102174538.4B6D7283416A@mail.pubhealth.ku.dk>
References: <20080102174538.4B6D7283416A@mail.pubhealth.ku.dk>
Message-ID: <478788A2.80608@cimr.cam.ac.uk>

I believe STRING_ELT() works even when pat is R_NilValue, so
the first line "does the right thing" even if the first element does not 
exist. I think this is intentional and not a bug.

Other more knowledgeable people please correct me if I am wrong.

A.R.Runnalls at kent.ac.uk wrote:
> In character.c within R 2.6.1, the function do_gsub contains the following 
> code:
> 
> 1199        if (STRING_ELT(pat, 0) == NA_STRING) {
> 1200            PROTECT(ans = allocVector(STRSXP, n));
> 1201            for(i = 0; i < n; i++)  SET_STRING_ELT(ans, i, NA_STRING);
> 1202            UNPROTECT(1);
> 1203            return ans;
> 1204        }
> 1205
> 1206        if (length(pat) < 1 || length(rep) < 1) error(R_MSG_IA);
> 
> Line 1206 checks that pat contains at least one element.  However, line 1199 
> has already attempted to access the first element.  The check should surely 
> come first.
> 
> Andrew Runnalls
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] do_gsub (PR#10540)
Hin-Tak Leung