Re: [Rd] .Call not counting parameters consistently (PR#8450)

From: Duncan Temple Lang <duncan_at_wald.ucdavis.edu>
Date: Wed 28 Dec 2005 - 20:01:20 GMT

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Coincidentally, I am in the process of working on a related aspect of symbol resolution.

The issue is likely to be the caching of native symbols that we do. We do not cache the registration information, just the address of the routine. And so the test is not repeated. We can fix this, but it will make things more complex. This is a good example of where using the new mechanism within namespaces to resolve the symbols when the package is loaded and making them into regular R objects that are passed to .Call/.C/... makes things more rational. In that case, the caching is done in R and type information is more directly available.

Off hand, I don't see why this would behave differently on Windows and Unix, so I'd appreciate if you could let us know the specific call that raises the error on Windows and not on Unix.

D.

murdoch@stats.uwo.ca wrote:
> The R_registerRoutines C function allows the number of parameters to a
> .Call function to be registered. For example, the tools package
> function md5sum() calls "Rmd5", which has been registered to require
> just one parameter.
>
> But if it is called with the wrong number of parameters, only the first
> error gets caught:
>
> > library(tools)
> > .Call("Rmd5",1,2,PACKAGE="tools")
> Error: Incorrect number of arguments (2), expecting 1 for Rmd5
> > .Call("Rmd5",1,2,PACKAGE="tools")
> Error: argument 'files' must be character
>
> This happens in Windows versions of R-patched and R-devel. Charlie
> Geyer was bitten by this in his fuzzyRankTests package (version 0.3),
> which fails check because of it on Windows, but not on Unix. I haven't
> done any testing on Unix.
>
> I've traced into the do_dotcall function in src/main/dotcode.c, and I
> see that on the second call the "symbol.symbol.call" member is NULL, so
> no test is done, but I don't see why this is happening. The
> resolveNativeRoutine function does some strange stuff.
>
> Duncan Murdoch
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

iD8DBQFDsu8Q9p/Jzwa2QP4RAuqGAJ9oHP7lhmb7IN9c/3WoRL5qimCTSACfaNhr WFY6NLnh2dfDTOGcaStbgNo=
=rCZg
-----END PGP SIGNATURE-----



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu Dec 29 07:07:04 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:35 GMT