release-request-957cd691-fb71-4770-8ff7-a3b9602655a5-for-git_oc-mr1-release-4314464 snap-temp-L54400000099147910

Change-Id: I7e11df9006bc81feae8682c9ec682060a72a47ab
diff --git a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
index 97dddc7..3b6bbcc 100644
--- a/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
+++ b/android_icu4j/src/main/java/android/icu/impl/CaseMapImpl.java
@@ -856,6 +856,7 @@
                 int type = UCaseProps.INSTANCE.getTypeOrIgnorable(c);
                 if ((type & UCaseProps.IGNORABLE) != 0) {
                     // Case-ignorable, continue with the loop.
+                    i += Character.charCount(c);
                 } else if (type != UCaseProps.NONE) {
                     return true;  // Followed by cased letter.
                 } else {
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
index b072863..731cdb6 100644
--- a/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
+++ b/android_icu4j/src/main/tests/android/icu/dev/test/lang/UCharacterCaseTest.java
@@ -709,6 +709,7 @@
         assertGreekUpper("Το ένα ή το άλλο.", "ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.");
         // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
         assertGreekUpper("ρωμέικα", "ΡΩΜΕΪΚΑ");
+        assertGreekUpper("ή.", "Ή.");
     }
 
     private static final class EditChange {
diff --git a/icu4c/source/test/intltest/strcase.cpp b/icu4c/source/test/intltest/strcase.cpp
index 7054b7f..e0f64c9 100644
--- a/icu4c/source/test/intltest/strcase.cpp
+++ b/icu4c/source/test/intltest/strcase.cpp
@@ -747,6 +747,7 @@
     // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
     assertGreekUpper("\\u03C1\\u03C9\\u03BC\\u03AD\\u03B9\\u03BA\\u03B1",
                      "\\u03A1\\u03A9\\u039C\\u0395\\u03AA\\u039A\\u0391");
+    assertGreekUpper("\\u03AE.", "\\u0397\\u0301.");
 }
 
 void
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
index f28e60e..1b2e8b7 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CaseMapImpl.java
@@ -852,6 +852,7 @@
                 int type = UCaseProps.INSTANCE.getTypeOrIgnorable(c);
                 if ((type & UCaseProps.IGNORABLE) != 0) {
                     // Case-ignorable, continue with the loop.
+                    i += Character.charCount(c);
                 } else if (type != UCaseProps.NONE) {
                     return true;  // Followed by cased letter.
                 } else {
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
index 6f8a679..2170788 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
@@ -708,6 +708,7 @@
         assertGreekUpper("Το ένα ή το άλλο.", "ΤΟ ΕΝΑ Ή ΤΟ ΑΛΛΟ.");
         // http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
         assertGreekUpper("ρωμέικα", "ΡΩΜΕΪΚΑ");
+        assertGreekUpper("ή.", "Ή.");
     }
 
     private static final class EditChange {