[Rd] warnings() generates error if there never were any (PR#4389)

maechler at stat.math.ethz.ch maechler at stat.math.ethz.ch
Thu Oct 2 10:55:09 MEST 2003

>>>>> "Greg" == gregory r warnes <gregory_r_warnes at groton.pfizer.com>
>>>>>     on Thu, 2 Oct 2003 08:46:09 +0200 (MET DST) writes:

    Greg> This message is in MIME format. Since your mail reader does not understand
    Greg> this format, some or all of this message may not be legible.

    Greg> ------_=_NextPart_000_01C388B0.D441A780
    Greg> Content-Type: text/plain; charset="iso-8859-1"

[ please  *never*  attach anything for bug reports.
  The current bug-management system messes up the MIME ] 

    Greg> In debugging a long-running function where I
    Greg> occasionally call warnings() to write out any warnings
    Greg> that have occurred, I discovered that calling
    Greg> warnings() before any warnings have ever been
    Greg> generated causes an error:

    >> warnings()
    Greg> Error in warnings() : Object "last.warning" not found

    Greg> The problem is that warnings() attemts to check the
    Greg> length of the variable 'last.warning' without first
    Greg> checking for its existance.

    Greg> This problem exists in R 1.7.1 as well as in the new 1.8.0 beta code.

    Greg> A simple patch fixes the problem:

    Greg> --- warnings.R.orig     2003-10-02 02:35:04.359451000 -0400
    Greg> +++ warnings.R  2003-10-02 02:42:08.900717000 -0400
    Greg> @@ -1,6 +1,6 @@
    Greg> warnings <- function(...)
    Greg> {
    Greg> -    if(!(n <- length(last.warning)))
    Greg> +    if(!exists("last.warning") || !(n <- length(last.warning)))
    Greg> return()
    Greg> names <- names(last.warning)
    Greg> cat("Warning message", if(n > 1)"s", ":\n", sep="")

Thank you Greg!
Fortunately, this falls into the category of "trivial bug fix"
(it cannot break anything), and hence still goes into 1.8.0

Martin Maechler <maechler at stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum  LEO C16	Leonhardstr. 27
ETH (Federal Inst. Technology)	8092 Zurich	SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1228			<><

More information about the R-devel mailing list