mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 20:08:17 +00:00
Fix a crash when saying certain numbers in Chinese
This commit fixes a crash that was occurring when attempting to say a number between 10000 and 100000 due to dividing by 0. This also removes some places where a "zero" is spoken when it should not be. (closes issue #14291) Reported by: dant Patches: say.c-14291.diff uploaded by dant (license 670) Tested by: dant git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@169794 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -2308,11 +2308,6 @@ static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char
|
||||
num -= ((num / 100) * 100);
|
||||
} else if (num < 10000){
|
||||
snprintf(buf, 10, "%d", num);
|
||||
if (last_length - strlen(buf) > 1 && last_length != 0 && last_length % strlen(buf) > 0) {
|
||||
last_length = strlen(buf);
|
||||
playz++;
|
||||
continue;
|
||||
}
|
||||
snprintf(fn, sizeof(fn), "digits/%d", (num / 1000));
|
||||
playt++;
|
||||
snprintf(buf, 10, "%d", num);
|
||||
@@ -2323,9 +2318,6 @@ static int ast_say_number_full_tw(struct ast_channel *chan, int num, const char
|
||||
res = ast_say_number_full_tw(chan, num / 10000, ints, language, audiofd, ctrlfd);
|
||||
if (res)
|
||||
return res;
|
||||
if (((num / 10000) % (num/100000)) == 0)
|
||||
playz++;
|
||||
|
||||
snprintf(buf, 10, "%d", num);
|
||||
ast_log(LOG_DEBUG, "Number '%d' %d %d\n", num, (int)strlen(buf), last_length);
|
||||
num -= ((num / 10000) * 10000);
|
||||
|
||||
Reference in New Issue
Block a user