[svn-commits] kpfleming: branch 10 r370430 - in /branches/10: ./ main/frame.c
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Tue Jul 24 11:54:05 CDT 2012
Author: kpfleming
Date: Tue Jul 24 11:54:01 2012
New Revision: 370430
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=370430
Log:
Rewrite a comment that didn't adequately explain the code it was documenting.
........
Merged revisions 370429 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Modified:
branches/10/ (props changed)
branches/10/main/frame.c
Propchange: branches/10/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: branches/10/main/frame.c
URL: http://svnview.digium.com/svn/asterisk/branches/10/main/frame.c?view=diff&rev=370430&r1=370429&r2=370430
==============================================================================
--- branches/10/main/frame.c (original)
+++ branches/10/main/frame.c Tue Jul 24 11:54:01 2012
@@ -491,13 +491,18 @@
out->datalen = f->datalen;
out->samples = f->samples;
out->delivery = f->delivery;
- /* Set us as having malloc'd header only, so it will eventually
- get freed. */
+ /* Even though this new frame was allocated from the heap, we can't mark it
+ * with AST_MALLOCD_HDR, AST_MALLOCD_DATA and AST_MALLOCD_SRC, because that
+ * would cause ast_frfree() to attempt to individually free each of those
+ * under the assumption that they were separately allocated. Since this frame
+ * was allocated in a single allocation, we'll only mark it as if the header
+ * was heap-allocated; this will result in the entire frame being properly freed.
+ */
out->mallocd = AST_MALLOCD_HDR;
out->offset = AST_FRIENDLY_OFFSET;
if (out->datalen) {
out->data.ptr = buf + sizeof(*out) + AST_FRIENDLY_OFFSET;
- memcpy(out->data.ptr, f->data.ptr, out->datalen);
+ memcpy(out->data.ptr, f->data.ptr, out->datalen);
} else {
out->data.uint32 = f->data.uint32;
}
More information about the svn-commits
mailing list