issue #5787
authorRussell Bryant <russell@russellbryant.com>
Mon, 21 Nov 2005 02:01:36 +0000 (02:01 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 21 Nov 2005 02:01:36 +0000 (02:01 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7162 65c4cc65-6c06-0410-ace0-fbb531ad65f3

ChangeLog
apps/app_record.c

index 2b06bb8..8bdb149 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-20  Russell Bryant <russell@digium.com>
 
+       * apps/app_record.c: Don't leak a frame if writing it to the file fails. (issue #5787)
+
        * Makefile: Create the monitor spool directory when the other spool directories are created.
 
        * pbx.c.c: Remove some useless checks and unnecessary calls to ast_strlen_zero(). (issue #5805)
index 7c50a1d..85310ea 100755 (executable)
@@ -277,6 +277,7 @@ static int record_exec(struct ast_channel *chan, void *data)
                        
                        if (res) {
                                ast_log(LOG_WARNING, "Problem writing frame\n");
+                               ast_frfree(f);
                                break;
                        }
                        
@@ -295,16 +296,15 @@ static int record_exec(struct ast_channel *chan, void *data)
                                        break;
                                }
                        }
-               }
-               if (f->frametype == AST_FRAME_VIDEO) {
+               } else if (f->frametype == AST_FRAME_VIDEO) {
                        res = ast_writestream(s, f);
                        
                        if (res) {
                                ast_log(LOG_WARNING, "Problem writing frame\n");
+                               ast_frfree(f);
                                break;
                        }
-               }
-               if ((f->frametype == AST_FRAME_DTMF) &&
+               } else if ((f->frametype == AST_FRAME_DTMF) &&
                    (f->subclass == terminator)) {
                        ast_frfree(f);
                        break;