]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix string-distance for two empty strings
authorPhilip Kaludercic <philipk@posteo.net>
Thu, 23 Sep 2021 16:12:41 +0000 (18:12 +0200)
committerMattias Engdegård <mattiase@acm.org>
Thu, 23 Sep 2021 17:10:38 +0000 (19:10 +0200)
* fns.c (Fstring_distance): Avoid using uninitialized memory.
* test/src/fns-tests.el (test-string-distance): Add test cases.

src/fns.c
test/src/fns-tests.el

index 4e74589ef264a7fa63f9263c8ebd4f30acc4d92d..a72e41aee5bda860a9af8f2d97faa0888dc2bc13 100644 (file)
--- 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)
index 9f6593a177c449fe6c0133f80ca9573956c4e856..bd5a4358e6513b5676ee5e49268879f43e55aa7c 100644 (file)
   ;; 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."