From 50e84a0630ff5d67b19b3afa2a60471543adbd56 Mon Sep 17 00:00:00 2001 From: Xavier Lucas Date: Wed, 15 Apr 2026 12:40:37 +0200 Subject: [PATCH] internal/colltab: fix zero digit Produce a digit instead of nothing when a numeric value contains only zeros. --- internal/colltab/numeric.go | 7 +++++++ internal/colltab/numeric_test.go | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/colltab/numeric.go b/internal/colltab/numeric.go index 53b819cc3..e02d1f6da 100644 --- a/internal/colltab/numeric.go +++ b/internal/colltab/numeric.go @@ -230,6 +230,13 @@ func (nc *numberConverter) update(elems []Elem) bool { // result fills in the length element for the digit sequence and returns the // completed collation elements. func (nc *numberConverter) result() []Elem { + // Insert single zero digit if only zeros. + if nc.nDigits == 0 { + nc.nDigits = 1 + nc.elems = append(nc.elems, 0) + copy(nc.elems[nc.lenIndex+2:], nc.elems[nc.lenIndex+1:]) + nc.elems[nc.lenIndex+1] = nc.w.zero + } e, _ := MakeElem(nc.nDigits, defaultSecondary, defaultTertiary, 0) nc.elems[nc.lenIndex] = e return nc.elems diff --git a/internal/colltab/numeric_test.go b/internal/colltab/numeric_test.go index e9406ae3f..44d0e38da 100644 --- a/internal/colltab/numeric_test.go +++ b/internal/colltab/numeric_test.go @@ -79,14 +79,14 @@ func TestNumericAppendNext(t *testing.T) { {"klm", p(99)}, {"aa", p(5, 5)}, {"1", p(120, 1, 101)}, - {"0", p(120, 0)}, + {"0", p(120, 1, 100)}, {"01", p(120, 1, 101)}, {"0001", p(120, 1, 101)}, {"10", p(120, 2, 101, 100)}, {"99", p(120, 2, 119, 119)}, {"9999", p(120, 4, 119, 119, 119, 119)}, {"1a", p(120, 1, 101, 5)}, - {"0b", p(120, 0, 6)}, + {"0b", p(120, 1, 100, 6)}, {"01c", p(120, 1, 101, 8, 2)}, {"10x", p(120, 2, 101, 100, 200)}, {"99y", p(120, 2, 119, 119, 201)},