diff options
author | Philip Kaludercic <philipk@posteo.net> | 2021-09-23 18:12:41 +0200 |
---|---|---|
committer | Mattias Engdegård <mattiase@acm.org> | 2021-09-23 19:10:38 +0200 |
commit | c44190ca5b9873fceae8aee7034ce8e89c42d4dd (patch) | |
tree | 43a7d5ec8023ef2c7476ced38886ad78df92cf24 | |
parent | 13d930deddd2e0529a0fb0f2fb93dd621d6d35be (diff) | |
download | emacs-c44190ca5b9873fceae8aee7034ce8e89c42d4dd.tar.gz emacs-c44190ca5b9873fceae8aee7034ce8e89c42d4dd.tar.bz2 emacs-c44190ca5b9873fceae8aee7034ce8e89c42d4dd.zip |
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.
-rw-r--r-- | src/fns.c | 2 | ||||
-rw-r--r-- | 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." |