shithub: kwa

Download patch

ref: 23b63e6c9668efb47e01ebfca03b0aed5cbbe327
parent: 8f2d3879a9c66d2633ca7ec1c3b0495981feb04f
author: qwx <qwx@sciops.net>
date: Sun Oct 26 22:58:40 EDT 2025

fix OFMT/CONVFMT usage conditions and initial state

--- a/tran.c
+++ b/tran.c
@@ -214,6 +214,7 @@
 	}
 	p->csub = CUNK;
 	p->ctype = OCELL;
+	p->conv = 0;
 	tp->nelemt++;
 	if (tp->nelemt > FULLTAB * tp->size)
 		rehash(tp);
@@ -364,9 +365,9 @@
 		fldbld();
 	else if (isrec(vp) && donerec == 0)
 		recbld();
-	conv = (uintptr)fmt >> 32 ^ (uintptr)fmt & 0xffffffff;
+	conv = (uintptr)*fmt >> 32 ^ (uintptr)*fmt & 0xffffffff;
 	if (isstr(vp) == 0
-	|| ((vp->tval & DONTFREE) == 0 && isnum(vp) && !isfld(vp))
+	|| vp->conv != 0 && (vp->tval & DONTFREE) == 0 && isnum(vp) && !isfld(vp)
 	&& (fmt == OFMT ^ (vp->tval & FMT) != 0 || vp->conv != conv)) {
 		if (freeable(vp))
 			xfree(vp->sval);
--