=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/tran.c,v retrieving revision 1.23 retrieving revision 1.24 diff -c -r1.23 -r1.24 *** src/usr.bin/awk/tran.c 2020/06/10 21:03:36 1.23 --- src/usr.bin/awk/tran.c 2020/06/10 21:03:56 1.24 *************** *** 1,4 **** ! /* $OpenBSD: tran.c,v 1.23 2020/06/10 21:03:36 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved --- 1,4 ---- ! /* $OpenBSD: tran.c,v 1.24 2020/06/10 21:03:56 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved *************** *** 307,327 **** if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "assign to"); if (isfld(vp)) { ! donerec = 0; /* mark $0 invalid */ fldno = atoi(vp->nval); if (fldno > *NF) newfld(fldno); DPRINTF( ("setting field %d to %g\n", fldno, f) ); } else if (&vp->fval == NF) { ! donerec = 0; /* mark $0 invalid */ setlastfld(f); DPRINTF( ("setting NF to %g\n", f) ); } else if (isrec(vp)) { ! donefld = 0; /* mark $1... invalid */ ! donerec = 1; savefs(); } else if (vp == ofsloc) { ! if (donerec == 0) recbld(); } if (freeable(vp)) --- 307,327 ---- if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "assign to"); if (isfld(vp)) { ! donerec = false; /* mark $0 invalid */ fldno = atoi(vp->nval); if (fldno > *NF) newfld(fldno); DPRINTF( ("setting field %d to %g\n", fldno, f) ); } else if (&vp->fval == NF) { ! donerec = false; /* mark $0 invalid */ setlastfld(f); DPRINTF( ("setting NF to %g\n", f) ); } else if (isrec(vp)) { ! donefld = false; /* mark $1... invalid */ ! donerec = true; savefs(); } else if (vp == ofsloc) { ! if (!donerec) recbld(); } if (freeable(vp)) *************** *** 356,372 **** if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "assign to"); if (isfld(vp)) { ! donerec = 0; /* mark $0 invalid */ fldno = atoi(vp->nval); if (fldno > *NF) newfld(fldno); DPRINTF( ("setting field %d to %s (%p)\n", fldno, s, s) ); } else if (isrec(vp)) { ! donefld = 0; /* mark $1... invalid */ ! donerec = 1; savefs(); } else if (vp == ofsloc) { ! if (donerec == 0) recbld(); } t = s ? tostring(s) : tostring(""); /* in case it's self-assign */ --- 356,372 ---- if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "assign to"); if (isfld(vp)) { ! donerec = false; /* mark $0 invalid */ fldno = atoi(vp->nval); if (fldno > *NF) newfld(fldno); DPRINTF( ("setting field %d to %s (%p)\n", fldno, s, s) ); } else if (isrec(vp)) { ! donefld = false; /* mark $1... invalid */ ! donerec = true; savefs(); } else if (vp == ofsloc) { ! if (!donerec) recbld(); } t = s ? tostring(s) : tostring(""); /* in case it's self-assign */ *************** *** 380,386 **** (void*)vp, NN(vp->nval), t, t, vp->tval, donerec, donefld) ); vp->sval = t; if (&vp->fval == NF) { ! donerec = 0; /* mark $0 invalid */ f = getfval(vp); setlastfld(f); DPRINTF( ("setting NF to %g\n", f) ); --- 380,386 ---- (void*)vp, NN(vp->nval), t, t, vp->tval, donerec, donefld) ); vp->sval = t; if (&vp->fval == NF) { ! donerec = false; /* mark $0 invalid */ f = getfval(vp); setlastfld(f); DPRINTF( ("setting NF to %g\n", f) ); *************** *** 393,401 **** { if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "read value of"); ! if (isfld(vp) && donefld == 0) fldbld(); ! else if (isrec(vp) && donerec == 0) recbld(); if (!isnum(vp)) { /* not a number */ vp->fval = atof(vp->sval); /* best guess */ --- 393,401 ---- { if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "read value of"); ! if (isfld(vp) && !donefld) fldbld(); ! else if (isrec(vp) && !donerec) recbld(); if (!isnum(vp)) { /* not a number */ vp->fval = atof(vp->sval); /* best guess */ *************** *** 414,422 **** if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "read value of"); ! if (isfld(vp) && donefld == 0) fldbld(); ! else if (isrec(vp) && donerec == 0) recbld(); /* --- 414,422 ---- if ((vp->tval & (NUM | STR)) == 0) funnyvar(vp, "read value of"); ! if (isfld(vp) && ! donefld) fldbld(); ! else if (isrec(vp) && ! donerec) recbld(); /*