[Rd] question on why Rigroup package moved to Archive on CRAN

Kevin Hendricks kevin.hendricks at sympatico.ca
Sun Mar 10 02:43:36 CET 2013


Hi Dan,

In case this catches anyone else ... 

FWIW, I found the issue ...  in my Rinit.c, my package uses the .External call which actually takes one SEXP which points to a "varargs-like" list.

Under 2.15.X and earlier, I thought the proper entry for an .External call was as below since it only does take one pointer as an argument:

#include "Rigroup.h"

/* Automate using sed or something. */
#if _MSC_VER >= 1000
__declspec(dllexport)
#endif

   static const R_ExternalMethodDef R_ExtDef[] = {
	{"igroupFuns", (DL_FUNC)&igroupFuns, 1},
	{NULL, NULL, 0},
   };

void R_init_Rigroup(DllInfo *info)
{
 R_registerRoutines(info,NULL,NULL,NULL,R_ExtDef);
}


But now according to the latest online docs on building your own package it says:

"For routines with a variable number of arguments invoked viathe .External interface, one specifies -1 for the number of arguments which tells R not to check the actual number passed. Note that the number of arguments passed to .External are not currently checked but they will be in R 3.0.0."

So I need to change my Rinit.c to change the "1" to a "-1" and that error should go away.

Thanks again for all your help with this.  I will update my package and resubmit it once version 3.0 gets released and I get a chance to verify that this does in fact fix the problem.

Kevin



More information about the R-devel mailing list