[Rd] Memory leak possible when redirecting R console

Jeffrey Horner jeff.horner at vanderbilt.edu
Mon Sep 3 00:16:43 CEST 2007


Hello,

To trigger the memory leak, an application embedding R will have printed 
  a vector element of size R_BUFSIZE or more to stdout, so long as the 
R_Outputfile pointer is NULL and R was compiled with vasprintf support. 
The leak is in Rcons_vprintf from printutils.c. It looks as though 
someone set up a fix for this but forgot a critical flag assignment when 
vasprintf() is called (vasprintf mallocs a buffer to print to, so it 
needs to be freed after use). Here's the fix:


Index: printutils.c
===================================================================
--- printutils.c        (revision 42743)
+++ printutils.c        (working copy)
@@ -658,8 +658,10 @@
      res = vsnprintf(buf, R_BUFSIZE, format, aq);
      va_end(aq);
  #ifdef HAVE_VASPRINTF
-    if(res >= R_BUFSIZE || res < 0)
+    if(res >= R_BUFSIZE || res < 0){
+       usedVasprintf = TRUE;
         vasprintf(&p, format, arg);
+    }
  #else
      if(res >= R_BUFSIZE) { /* res is the desired output length */
         usedRalloc = TRUE;

Best,

Jeff
-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner



More information about the R-devel mailing list