=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/tran.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- src/usr.bin/awk/tran.c 1997/08/25 16:17:14 1.3 +++ src/usr.bin/awk/tran.c 1999/04/18 17:06:31 1.4 @@ -1,4 +1,4 @@ -/* $OpenBSD: tran.c,v 1.3 1997/08/25 16:17:14 kstailey Exp $ */ +/* $OpenBSD: tran.c,v 1.4 1999/04/18 17:06:31 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved @@ -108,7 +108,7 @@ cp->sval = (char *) ARGVtab; for (i = 0; i < ac; i++) { sprintf(temp, "%d", i); - if (isnumber(*av)) + if (is_number(*av)) setsymtab(temp, *av, atof(*av), STR|NUM, ARGVtab); else setsymtab(temp, *av, 0.0, STR, ARGVtab); @@ -128,7 +128,7 @@ if ((p = strchr(*envp, '=')) == NULL) continue; *p++ = 0; /* split into two strings at = */ - if (isnumber(p)) + if (is_number(p)) setsymtab(*envp, p, atof(p), STR|NUM, ENVtab); else setsymtab(*envp, p, 0.0, STR, ENVtab); @@ -288,6 +288,8 @@ donefld = 0; /* mark $1... invalid */ donerec = 1; } + if (freeable(vp)) + xfree(vp->sval); /* free any previous string */ vp->tval &= ~STR; /* mark string invalid */ vp->tval |= NUM; /* mark number ok */ dprintf( ("setfval %p: %s = %g, t=%o\n", vp, vp->nval, f, vp->tval) ); @@ -342,7 +344,7 @@ recbld(); if (!isnum(vp)) { /* not a number */ vp->fval = atof(vp->sval); /* best guess */ - if (isnumber(vp->sval) && !(vp->tval&CON)) + if (is_number(vp->sval) && !(vp->tval&CON)) vp->tval |= NUM; /* make NUM only sparingly */ } dprintf( ("getfval %p: %s = %g, t=%o\n", vp, vp->nval, vp->fval, vp->tval) );