From 9e3b934d2e71d01c94ff1510d96b79540539a879 Mon Sep 17 00:00:00 2001 From: Philipp Reh Date: Sat, 21 Feb 2009 11:41:22 +0100 Subject: [PATCH] Go back in the kana2romaji loop so we don't miss characters. --- kana2romaji.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/kana2romaji.cpp b/kana2romaji.cpp index 01124fd..d0da9f3 100644 --- a/kana2romaji.cpp +++ b/kana2romaji.cpp @@ -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; + } } } -- 2.30.2