summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2015-11-20 10:29:50 +0100
committerAndreas Rumpf <rumpf_a@web.de>2015-11-20 10:29:50 +0100
commit3c5a0b1b1a16f386e96370f634f28f9fb7b9f062 (patch)
tree90dc651a93d5fea7495ddd54224d122fec95d1a9
parentba6d0eb4db5bb85c772dea3d4c5afb2bfbb5a6d5 (diff)
parenta1df79d5f2f5df1f6c81e28a91f3750f791d3fbd (diff)
downloadNim-3c5a0b1b1a16f386e96370f634f28f9fb7b9f062.tar.gz
Merge pull request #3563 from c-blake/devel
Fix loop index bug in scan for a[s] in b[s..s+len2-1].
-rw-r--r--lib/pure/strutils.nim2
-rw-r--r--tests/stdlib/tstrutil.nim1
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index b61df6086..6c561eaf9 100644
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -1281,7 +1281,7 @@ proc editDistance*(a, b: string): int {.noSideEffect,
 
   # another special case:
   if len1 == 1:
-    for j in s..len2-1:
+    for j in s..s+len2-1:
       if a[s] == b[j]: return len2 - 1
     return len2
 
diff --git a/tests/stdlib/tstrutil.nim b/tests/stdlib/tstrutil.nim
index b15bf0e68..b97f2b1e9 100644
--- a/tests/stdlib/tstrutil.nim
+++ b/tests/stdlib/tstrutil.nim
@@ -78,6 +78,7 @@ assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3)
 assert(editDistance("prefix__hallo_suffix", "prefix") == 14)
 assert(editDistance("prefix__hallo_suffix", "suffix") == 14)
 assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2)
+assert(editDistance("main", "malign") == 2)
 
 assert "/1/2/3".rfind('/') == 4
 assert "/1/2/3".rfind('/', 1) == 0