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