[Rd] DispatchOrEval missing in do_isfinite and do_isinfinite (PR#7951)

lars@predict.com lars at predict.com
Thu Jun 16 23:22:05 CEST 2005


Full_Name: Lars Hansen
Version: 2.1.0
OS: SunOS 5.8
Submission from: (NULL) (207.66.36.189)


Hi,

S4 method displacth does not work for the two generic functions 'is.finite' and
'is.infinite'. It turns out that the C functions 'do_isfinite' and
'do_isinfinite' in src/main/coerce.c are missing a call to 'DispatchOrEval' (see
do_isnan). Added in the call fixed the problem. My functions no look like this:

Form coerce.c:

SEXP do_isfinite(SEXP call, SEXP op, SEXP args, SEXP rho)
{
    SEXP ans, x, names, dims;
    int i, n;

    if (DispatchOrEval(call, op, "is.finite", args, rho, &ans, 1, 1))
        return(ans);

    checkArity(op, args);
    ...

SEXP do_isinfinite(SEXP call, SEXP op, SEXP args, SEXP rho)
{
    SEXP ans, x, names, dims;
    double xr, xi;
    int i, n;

    if (DispatchOrEval(call, op, "is.infinite", args, rho, &ans, 1, 1))
        return(ans);

    checkArity(op, args);
    ...

Thanks you,
Lars



More information about the R-devel mailing list