Fix crashing when source or target array empty
This commit is contained in:
parent
cfaa94f08e
commit
a88dee4c4b
@ -80,24 +80,27 @@ enum LevenshteinTransformations {
|
|||||||
operations[0][targetIndex] = .insert
|
operations[0][targetIndex] = .insert
|
||||||
}
|
}
|
||||||
|
|
||||||
for sourceIndex in 1...sourceCount {
|
if sourceCount > 0 && targetCount > 0 {
|
||||||
for targetIndex in 1...targetCount {
|
for sourceIndex in 1...sourceCount {
|
||||||
if source[sourceIndex - 1] == target[targetIndex - 1] {
|
for targetIndex in 1...targetCount {
|
||||||
editDistances[sourceIndex][targetIndex] = editDistances[sourceIndex - 1][targetIndex - 1]
|
if source[sourceIndex - 1] == target[targetIndex - 1] {
|
||||||
operations[sourceIndex][targetIndex] = .noChange
|
editDistances[sourceIndex][targetIndex] = editDistances[sourceIndex - 1][targetIndex - 1]
|
||||||
} else {
|
operations[sourceIndex][targetIndex] = .noChange
|
||||||
editDistances[sourceIndex][targetIndex] = 1 + min(
|
|
||||||
editDistances[sourceIndex - 1][targetIndex - 1],
|
|
||||||
editDistances[sourceIndex - 1][targetIndex],
|
|
||||||
editDistances[sourceIndex][targetIndex - 1]
|
|
||||||
)
|
|
||||||
if editDistances[sourceIndex][targetIndex] == editDistances[sourceIndex - 1][targetIndex - 1] + 1 {
|
|
||||||
operations[sourceIndex][targetIndex] = .replace
|
|
||||||
} else if editDistances[sourceIndex][targetIndex]
|
|
||||||
== editDistances[sourceIndex - 1][targetIndex] + 1 {
|
|
||||||
operations[sourceIndex][targetIndex] = .delete
|
|
||||||
} else {
|
} else {
|
||||||
operations[sourceIndex][targetIndex] = .insert
|
editDistances[sourceIndex][targetIndex] = 1 + min(
|
||||||
|
editDistances[sourceIndex - 1][targetIndex - 1],
|
||||||
|
editDistances[sourceIndex - 1][targetIndex],
|
||||||
|
editDistances[sourceIndex][targetIndex - 1]
|
||||||
|
)
|
||||||
|
if editDistances[sourceIndex][targetIndex]
|
||||||
|
== editDistances[sourceIndex - 1][targetIndex - 1] + 1 {
|
||||||
|
operations[sourceIndex][targetIndex] = .replace
|
||||||
|
} else if editDistances[sourceIndex][targetIndex]
|
||||||
|
== editDistances[sourceIndex - 1][targetIndex] + 1 {
|
||||||
|
operations[sourceIndex][targetIndex] = .delete
|
||||||
|
} else {
|
||||||
|
operations[sourceIndex][targetIndex] = .insert
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user