ref: f16c52c353075a9841a74c3d5cb4643448eb87fa
parent: b8dd286f723159595265e22e814557002e1120ab
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Mon Sep 2 16:23:50 EDT 2024
unix: fix completely broken %r
--- a/otf.c.in
+++ b/otf.c.in
@@ -827,7 +827,6 @@
if(o->td.eblc == nil && o->td.ebdt == nil)
return g;
}
-
if(o->td.eblc != nil && o->td.ebdt != nil)
return bitglyf(o, g, opts);
--- a/unix/otfsys.c
+++ b/unix/otfsys.c
@@ -16,14 +16,17 @@
werrstr(char *fmt, ...)
{
va_list a;
- char buf[ERRMAX];
- int n;
+ char f[ERRMAX], buf[ERRMAX];
+ int n, withr;
va_start(a, fmt);
- n = vsnprintf(buf, sizeof(buf), fmt, a);
+ n = snprintf(f, sizeof(f), "%s", fmt);
+ if((withr = (n >= 2 && f[n-2] == '%' && f[n-1] == 'r')) != 0)
+ f[n-2] = 0;
+ n = vsnprintf(buf, sizeof(buf), f, a);
va_end(a);
- if(n >= 2 && buf[n-2] == '%' && buf[n-1] == 'r')
- snprintf(buf+n-2, sizeof(buf)-n+2, "%s", errstr);
+ if(withr)
+ snprintf(buf+n, sizeof(buf)-n, "%s", errstr);
snprintf(errstr, sizeof(errstr), "%s", buf);
}
--
⑨