From: Philip Kaludercic Date: Thu, 23 Sep 2021 16:12:41 +0000 (+0200) Subject: Fix string-distance for two empty strings X-Git-Tag: emacs-28.0.90~712 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c44190ca5b9873fceae8aee7034ce8e89c42d4dd;p=emacs.git 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. --- 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."