]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
say: Fix a bug where SayNumber in Polish tries to play incorrect sound.
authorJoshua Colp <jcolp@digium.com>
Wed, 26 Mar 2014 22:43:25 +0000 (22:43 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 26 Mar 2014 22:43:25 +0000 (22:43 +0000)
This change fixes a bug where calling SayNumber with a number divisible by
100 using the Polish language would cause the code to attempt to play a
sound file with an empty name.

(closes issue ASTERISK-23509)
Reported by: zvision

Review: https://reviewboard.asterisk.org/r/3378/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@411243 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/say.c

index d1d266576f353ea94d746e2b7b8332fd7cbb152c..52b535b459a249062f2713cad98e8607e1751037 100644 (file)
@@ -1893,28 +1893,28 @@ static void powiedz(struct ast_channel *chan, const char *language, int audiofd,
        if (i100>0)
                pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->setki[i100]);
 
-       if ( m100 > 0 && m100 <=9 ) {
-               if (m1000>0)
+       if (m100 > 0 && m100 <= 9) {
+               if (m1000 > 0)
                        pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->cyfry2[m100]);
                else
                        pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->cyfry[m100]);
-       } else if (m100 % 10 == 0) {
+       } else if (m100 % 10 == 0 && m100 != 0) {
                pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->dziesiatki[m100 / 10]);
-       } else if (m100 <= 19 ) {
+       } else if (m100 > 10 && m100 <= 19) {
                pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->nastki[m100 % 10]);
-       } else if (m100 != 0) {
-               if (odm->separator_dziesiatek[0]==' ') {
+       } else if (m100 > 20) {
+               if (odm->separator_dziesiatek[0] == ' ') {
                        pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->dziesiatki[m100 / 10]);
                        pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, odm->cyfry2[m100 % 10]);
                } else {
                        char buf[10];
                        char *b = buf;
-                       b = pl_append(b, odm->dziesiatki[m100 / 10]);  
-                       b = pl_append(b, odm->separator_dziesiatek);  
-                       pl_append(b, odm->cyfry2[m100 % 10]); 
+                       b = pl_append(b, odm->dziesiatki[m100 / 10]);
+                       b = pl_append(b, odm->separator_dziesiatek);
+                       pl_append(b, odm->cyfry2[m100 % 10]);
                        pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, buf);
                }
-       } 
+       }
 
        if (rzad > 0) {
                pl_odtworz_plik(chan, language, audiofd, ctrlfd, ints, pl_rzad_na_tekst(odm, i, rzad));