Go back in the kana2romaji loop so we don't miss characters.
authorPhilipp Reh <sefi@s-e-f-i.de>
Sat, 21 Feb 2009 10:41:22 +0000 (11:41 +0100)
committerPhilipp Reh <sefi@s-e-f-i.de>
Sat, 21 Feb 2009 10:41:22 +0000 (11:41 +0100)
kana2romaji.cpp

index 01124fd55b6825ec2675524723ba65b24252d305..d0da9f396d8693efa0237abfcab3bd3d66f42c43 100644 (file)
@@ -375,7 +375,7 @@ void kana2romaji(const string& kana, string& rom) {
                   pred == "dzi"
                ) {
                  remove_quote_1(pos, rom);
-                 continue;
+                 pos -= 2;
                }
             }
             else if (pos > 1) {
@@ -395,37 +395,39 @@ void kana2romaji(const string& kana, string& rom) {
                  // shorten "ji\1y" to "j"
                  // otherwise remove "\1" and the preceding character
                  // but not the y
-                  rom.erase(
-                    pos - 1,
-                    (pos + 1 < rom.size()
-                     && rom[pos + 1] == 'y'
-                     && pred[0] == 'j')
-                       ? 3
-                       : 2);
-
-                  continue;
+                 rom.erase(
+                   pos - 1,
+                   (pos + 1 < rom.size()
+                    && rom[pos + 1] == 'y'
+                    && pred[0] == 'j')
+                      ? 3
+                      : 2);
+                  pos -= 2;
                }
-               
-               if(pred == "fu" ||
+               else if(
+                  pred == "fu" ||
                   pred == "de" ||
                   pred == "te" ||
                   pred == "vu")
                {
                   remove_quote_1(pos, rom);
-                  continue;
+                  pos -= 2;
                }
             }
             else
             {
               rom.erase(pos);
+              --pos;
             }
         }
-        // FIXME!
         else if (rom[pos] == '\2')
-       {
+        {
           if(pos + 1 < rom.size())
             rom[pos] = rom[pos + 1];
-         else
+          else
+          {
             rom.erase(pos);
+            --pos;
+          }
         }
 }