Index: main/channel.c =================================================================== --- main/channel.c (revision 218726) +++ main/channel.c (working copy) @@ -2463,9 +2463,9 @@ static void ast_read_generator_actions(struct ast_channel *chan, struct ast_frame *f) { - if (chan->generatordata && !ast_internal_timing_enabled(chan)) { + if (chan->generator && chan->generator->generate && chan->generatordata && !ast_internal_timing_enabled(chan)) { void *tmp = chan->generatordata; - int (*generate)(struct ast_channel *chan, void *tmp, int datalen, int samples) = NULL; + int (*generate)(struct ast_channel *chan, void *tmp, int datalen, int samples) = chan->generator->generate; int res; int samples; @@ -2484,10 +2484,7 @@ } else { samples = f->samples; } - - if (chan->generator->generate) { - generate = chan->generator->generate; - } + /* This unlock is here based on two assumptions that hold true at this point in the * code. 1) this function is only called from within __ast_read() and 2) all generators * call ast_write() in their generate callback.