diff -Naur asterisk-1.6.2.9-orig/main/dsp.c asterisk-1.6.2.9/main/dsp.c --- asterisk-1.6.2.9-orig/main/dsp.c 2010-05-19 12:44:06.000000000 -0400 +++ asterisk-1.6.2.9/main/dsp.c 2010-06-05 13:25:49.000000000 -0400 @@ -1424,8 +1424,10 @@ } memmove(&dsp->digit_state.digits[0], &dsp->digit_state.digits[1], dsp->digit_state.current_digits); dsp->digit_state.current_digits--; - memmove(&dsp->digit_state.digitlen[0], &dsp->digit_state.digitlen[1], dsp->digit_state.current_len * sizeof(dsp->digit_state.digitlen[0])); - dsp->digit_state.current_len--; + if (dsp->digit_state.current_len > 1) { + memmove(&dsp->digit_state.digitlen[0], &dsp->digit_state.digitlen[1], dsp->digit_state.current_len * sizeof(dsp->digit_state.digitlen[0])); + dsp->digit_state.current_len--; + } dsp->dtmf_began = 0; if (dsp->features & DSP_FEATURE_BUSY_DETECT) {