From c44190ca5b9873fceae8aee7034ce8e89c42d4dd Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 23 Sep 2021 18:12:41 +0200 Subject: [PATCH] Fix string-distance for two empty strings * fns.c (Fstring_distance): Avoid using uninitialized memory. * test/src/fns-tests.el (test-string-distance): Add test cases. --- src/fns.c | 2 +- test/src/fns-tests.el | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/fns.c b/src/fns.c index 4e74589ef26..a72e41aee5b 100644 --- a/src/fns.c +++ b/src/fns.c @@ -322,7 +322,7 @@ Letter-case is significant, but text properties are ignored. */) USE_SAFE_ALLOCA; ptrdiff_t *column = SAFE_ALLOCA ((len1 + 1) * sizeof (ptrdiff_t)); - for (y = 1; y <= len1; y++) + for (y = 0; y <= len1; y++) column[y] = y; if (use_byte_compare) diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el index 9f6593a177c..bd5a4358e65 100644 --- a/test/src/fns-tests.el +++ b/test/src/fns-tests.el @@ -786,7 +786,15 @@ ;; string containing hanzi character, compare by character (should (equal 2 (string-distance "ab" "ab我她"))) (should (equal 1 (string-distance "ab" "a我b"))) - (should (equal 1 (string-distance "我" "她")))) + (should (equal 1 (string-distance "我" "她"))) + + ;; correct behaviour with empty strings + (should (equal 0 (string-distance "" ""))) + (should (equal 0 (string-distance "" "" t))) + (should (equal 1 (string-distance "x" ""))) + (should (equal 1 (string-distance "x" "" t))) + (should (equal 1 (string-distance "" "x"))) + (should (equal 1 (string-distance "" "x" t)))) (ert-deftest test-bignum-eql () "Test that `eql' works for bignums." -- 2.39.2