From 0e04448101fab9055a1d97fb69eeae2945f6a611 Mon Sep 17 00:00:00 2001
From: Brian West <brian@freeswitch.org>
Date: Thu, 31 Aug 2006 00:15:31 +0000
Subject: [PATCH] small tweaks

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2463 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/codecs/mod_amr/mod_amr.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/mod/codecs/mod_amr/mod_amr.c b/src/mod/codecs/mod_amr/mod_amr.c
index b4f14b8380..152b11ce3f 100644
--- a/src/mod/codecs/mod_amr/mod_amr.c
+++ b/src/mod/codecs/mod_amr/mod_amr.c
@@ -62,6 +62,7 @@ static const char modname[] = "mod_amr";
 
 struct amr_context {
 	void *encoder_state;
+	void *decoder_state;
 	int mode;
 };
 
@@ -105,13 +106,15 @@ static switch_status_t switch_amr_init(switch_codec_t *codec, switch_codec_flag_
 	} else {
 
 		context->mode = AMR_Mode; /* start in mode 7 */
+		context->encoder_state = NULL;
+		context->decoder_state = NULL;
 
 		if (encoding) {
 			context->encoder_state = Encoder_Interface_init(0);
 		}
 
 		if (decoding) {
-			Decoder_Interface_init();
+			context->decoder_state = Decoder_Interface_init();
 		}
 
 		codec->private_info = context;
@@ -123,8 +126,13 @@ static switch_status_t switch_amr_init(switch_codec_t *codec, switch_codec_flag_
 static switch_status_t switch_amr_destroy(switch_codec_t *codec) 
 {
 	struct amr_context *context = codec->private_info;
-	Encoder_Interface_exit(context->encoder_state);
-	Decoder_Interface_exit(context->encoder_state);
+
+	if (context->encoder_state) {
+		Encoder_Interface_exit(context->encoder_state);
+	}
+	if (context->decoder_state) {
+		Decoder_Interface_exit(context->decoder_state);
+	}
 	codec->private_info = NULL;
 	return SWITCH_STATUS_SUCCESS;
 }