y-chan/node-voicevox-engine

非可読文字を入れると音声合成に失敗することがある

y-chan opened this issue · 0 comments

かなり場合によりますが、非可読文字を入れると稀に音声合成に失敗します。
具体的にはmap::atと表示されて落ちます(要するにmapにないデータを取ろうとして落ちます)

原因は突き止めました。なぜかは不明ですが、以下の165行目でポインタの中身が謎のデータに入れ替わってしまい、ソースコードのような文字列を抽出してしまっていたことが原因です。

for (OjtPhoneme* consonant_phoneme_data : consonant_phoneme_data_list) {
long phoneme_id = consonant_phoneme_data != nullptr
? consonant_phoneme_data->phoneme_id()
: -1;
consonant_phoneme_list.push_back(phoneme_id);
}

そもそもポインタで管理するのは良くないと思われるので、それを改善出来たらよいかもしれません