This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-codec.git
commit beb39d4e003d0d9e8e3eff02c3529c87e7a4af03 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Thu Apr 18 15:49:46 2024 -0400 Wrong output of DoubleMetaphone in 1.16.1 --- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java | 1 + .../java/org/apache/commons/codec/language/DoubleMetaphoneTest.java | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 8db327ad..359a4155 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -45,6 +45,7 @@ The <action> type attribute can be add,update,fix,remove. <body> <release version="1.17.0" date="YYYY-MM-DD" description="Feature and fix release. Requires a minimum of Java 8."> <!-- FIX --> + <action type="fix" issue="CODEC-320" dev="ggregory" due-to="Martin Frydl, Gary Gregory">Wrong output of DoubleMetaphone in 1.16.1.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Optimize memory allocation in PhoneticEngine.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">BCodec and QCodec encode() methods throw UnsupportedCharsetException instead of EncoderException.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Set Javadoc link to latest Java API LTS version.</action> diff --git a/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java b/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java index f7f84d72..4dd8fd33 100644 --- a/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java +++ b/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java @@ -617,6 +617,7 @@ public class DoubleMetaphone implements StringEncoder { private int handleGH(final String value, final DoubleMetaphoneResult result, int index) { if (index > 0 && !isVowel(charAt(value, index - 1))) { result.append('K'); + index += 2; } else if (index == 0) { if (charAt(value, index + 2) == 'I') { result.append('J'); diff --git a/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java b/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java index bc4de19f..0efcfb85 100644 --- a/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java +++ b/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java @@ -1070,6 +1070,11 @@ public class DoubleMetaphoneTest extends AbstractStringEncoderTest<DoubleMetapho assertFalse(new DoubleMetaphone().isDoubleMetaphoneEqual("", "aa", true)); } + @Test + public void testCodec320() { + assertTrue(new DoubleMetaphone().isDoubleMetaphoneEqual("ANGHELINA", "ANKL", false)); + } + @Test public void testDoubleMetaphone() { assertDoubleMetaphone("TSTN", "testing");