From 25e1c74bf130931ed1c8bad364f5a41d80ec7db4 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Tue, 15 Jan 2008 23:35:29 +0000
Subject: [PATCH] Clean up something I did for ABI compatability in 1.4

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@98945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 include/asterisk/translate.h | 9 ++-------
 main/translate.c             | 5 ++---
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/include/asterisk/translate.h b/include/asterisk/translate.h
index b1f615f7ff..97f10283f3 100644
--- a/include/asterisk/translate.h
+++ b/include/asterisk/translate.h
@@ -138,13 +138,7 @@ struct ast_trans_pvt {
 	struct ast_translator *t;
 	struct ast_frame f;	/*!< used in frameout */
 	int samples;		/*!< samples available in outbuf */
-	/*! 
-	 * \brief actual space used in outbuf
-	 *
-	 * Also, for the sake of ABI compatability, a magic value of -1 in this
-	 * field means that the pvt has been requested to be destroyed, but is
-	 * pending destruction until ast_translate_frame_freed() gets called. 
-	 */
+	/*! \brief actual space used in outbuf */
 	int datalen;
 	void *pvt;		/*!< more private data, if any */
 	char *outbuf;		/*!< the useful portion of the buffer */
@@ -152,6 +146,7 @@ struct ast_trans_pvt {
 	struct ast_trans_pvt *next;	/*!< next in translator chain */
 	struct timeval nextin;
 	struct timeval nextout;
+	unsigned int destroy:1;
 };
 
 /*! \brief generic frameout function */
diff --git a/main/translate.c b/main/translate.c
index 8bdaaf082b..1af88ecfb8 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -139,8 +139,7 @@ static void destroy(struct ast_trans_pvt *pvt)
 		 * When ast_frfree() gets called on that frame, this ast_trans_pvt
 		 * will get destroyed, too. */
 
-		/* Set the magic hint that this has been requested to be destroyed. */
-		pvt->datalen = -1;
+		pvt->destroy = 1;
 
 		return;
 	}
@@ -898,7 +897,7 @@ void ast_translate_frame_freed(struct ast_frame *fr)
 
 	pvt = (struct ast_trans_pvt *) (((char *) fr) - offsetof(struct ast_trans_pvt, f));
 
-	if (pvt->datalen != -1)
+	if (!pvt->destroy)
 		return;
 	
 	destroy(pvt);
-- 
GitLab