Skip to content

missing PROTECT() in src/main/arithmetic.c

2 messages · Hervé Pagès, Luke Tierney

#
at lines 651 & 653 (integer_binary function):

     if (code == DIVOP || code == POWOP)
         ans = allocVector(REALSXP, n);
     else
         ans = allocVector(INTSXP, n);

There are calls to warningcall() later in the function, which can
trigger garbbage collection.

Looks like the typical scenario where it seemed pretty safe to not
PROTECT in the original version of the function but became very
unsafe 3 years later when the calls to warningcall() were added to
the function.

Cheers,
H.
#
Thanks -- fixed in 63290 (trunk) and 63291 (patched).

luke
On Fri, 12 Jul 2013, Herv? Pag?s wrote: