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");

Reply via email to