summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Kaludercic <philipk@posteo.net>2021-09-23 18:12:41 +0200
committerMattias Engdegård <mattiase@acm.org>2021-09-23 19:10:38 +0200
commitc44190ca5b9873fceae8aee7034ce8e89c42d4dd (patch)
tree43a7d5ec8023ef2c7476ced38886ad78df92cf24
parent13d930deddd2e0529a0fb0f2fb93dd621d6d35be (diff)
downloademacs-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.c2
-rw-r--r--test/src/fns-tests.el10
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."