diff options
Diffstat (limited to 'media/libspeex_resampler/05_set-rate-overflow-no-return.patch')
-rw-r--r-- | media/libspeex_resampler/05_set-rate-overflow-no-return.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/media/libspeex_resampler/05_set-rate-overflow-no-return.patch b/media/libspeex_resampler/05_set-rate-overflow-no-return.patch new file mode 100644 index 0000000000..01505ed9ae --- /dev/null +++ b/media/libspeex_resampler/05_set-rate-overflow-no-return.patch @@ -0,0 +1,27 @@ +This is a fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1274083 + +diff --git a/src/resample.c b/src/resample.c +--- a/src/resample.c ++++ b/src/resample.c +@@ -1129,18 +1129,19 @@ EXPORT int speex_resampler_set_rate_frac + + st->num_rate /= fact; + st->den_rate /= fact; + + if (old_den > 0) + { + for (i=0;i<st->nb_channels;i++) + { +- if (multiply_frac(&st->samp_frac_num[i],st->samp_frac_num[i],st->den_rate,old_den) != RESAMPLER_ERR_SUCCESS) +- return RESAMPLER_ERR_OVERFLOW; ++ if (multiply_frac(&st->samp_frac_num[i],st->samp_frac_num[i],st->den_rate,old_den) != RESAMPLER_ERR_SUCCESS) { ++ st->samp_frac_num[i] = st->den_rate-1; ++ } + /* Safety net */ + if (st->samp_frac_num[i] >= st->den_rate) + st->samp_frac_num[i] = st->den_rate-1; + } + } + + if (st->initialised) + return update_filter(st); |