${var:-default} and ${var-default} append default value instead of discarding it when default contains multi-byte characters

GrĂ©gory Pakosz <[email protected]> Thu, 23 Apr 2026 16:22:15 +0200
Newsgroups org.kernel.vger.dash
Message-ID <CAC_01E1y9zYecy6ugvmwCzNm2tb2ipWqPKG6f6QUpOKU5AsK6g@mail.gmail.com>
Hello,

It seems that Dash regressed (but I don't know when).

$ dash -c 'x=3DX; printf "before: %s (%d)\n" "$x" "${#x}"; x=3D${x:-=E2=86=
=97};
printf "after: %s (%d)\n" "$x" "${#x}"'
before: =E2=86=97 (1)
after: X=E2=86=97 (2)

I'm using Dash 0.5.13.2 on macOS, installed via Homebrew.
The bug seems to be locale irrelevant.

Regards,
Gr=C3=A9gory