sbr/fmt_scan.c: Only wcwidth(3) a valid mbtowc(3) result.
The assert(3) added by
80a9e99f7078199500d2d53c8d77d1b92af06fbc is
failing, but not reproducibly. It's probable that mbtowc() is returning
a negative, and not altering wide_char, leaving it as random stack
content. Taking its wcwidth() then sometimes also returns negative,
causing the assert() failure. Initialising wide_char before the call
isn't a solution as it isn't documented if it's modified to an invalid
value on an error return.
Instead, delay calculating the wcwidth() until after the possible
substitution of "?". Leave the assert() in place.