From ripley@stats.ox.ac.uk  Thu Feb 15 08:28:30 2001
From: ripley@stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu, 15 Feb 2001 08:28:30 +0000 (GMT)
Subject: [Rd] who frees dd and xd in X11_Open?
In-Reply-To: <pxae7opnm0.fsf@infiniti.ece.cmu.edu>
Message-ID: <Pine.GSO.4.31.0102150824260.13108-100000@toucan.stats>

On 14 Feb 2001, Thomas Vogels wrote:

>
> Hi, I'm not sure this is a bug in the code, the comment or my
> thinking.  So first try goes to r-devel...  I find the following
> comment in X11_Open () (src/unix/X11/devX11.c):
>
> /* if we have to bail out with "error", then must free(dd) and free(xd) */
>
> A couple lines down, there is:
>
>     if (!strncmp(dsp, "png::", 5)) {
> 	FILE *fp;
> #ifndef HAVE_PNG
> 	error("No png support in this version of R");
> #endif
> 	if (!(fp = R_fopen(R_ExpandFileName(dsp+5), "w")))
> 	    error("could not open PNG file `%s'", dsp+6);
>     ...
>
> So what does the comment imply?  If error jumps out to the toplevel
> without giving X11DeviceDriver a chance to free dd and xd, then this
> should be:

[...]

Well, the thinking was that people would not be trying to use facilities
on systems where they had not bothered to implement them, so what problem
was a small memory leak?  They would only do it once, ever ....

In these cases it would be better to give a warning and return FALSE, when
the normal return mechanism will free xd and then dd.  I will alter it to
that when I have tested it out.

BDR

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] who frees dd and xd in X11_Open?
Prof Brian Ripley