fix for incorrect (partial) written sequences when libc wcwidth() == -1
authorHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 9 May 2020 11:56:28 +0000 (13:56 +0200)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sat, 9 May 2020 12:07:52 +0000 (14:07 +0200)
commit8211e36d281990a39db1853bcd454ac59e53d521
treed912f2c0c9e4cea67b42a5aab8674d343ce42c3c
parent87545c612e8ab6e7cd1ef38e2355d0cb86df79f2
fix for incorrect (partial) written sequences when libc wcwidth() == -1

Fix an issue with incorrect (partial) written sequences when libc wcwidth() ==
-1. The sequence is updated to on wcwidth(u) == -1:

c = "\357\277\275"

but len isn't.

A way to reproduce in practise:

* st -o dump.txt
* In the terminal: printf '\xcd\xb8'
- This is codepoint 888, on OpenBSD it reports wcwidth() == -1.
- Quit the terminal.
- Look in dump.txt (partial written sequence of "UTF_INVALID").

This was introduced in:

" commit 11625c7166b7e4dad414606227acec2de1c36464
Author: czarkoff@gmail.com <czarkoff@gmail.com>
Date:   Tue Oct 28 12:55:28 2014 +0100

    Replace character with U+FFFD if wcwidth() is -1

    Helpful when new Unicode codepoints are not recognized by libc."

Change:

Remove setting the sequence. If this happens to break something, another
solution could be setting len = 3 for the sequence.
st.c