Merged revisions 60661 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Sun, 8 Apr 2007 01:42:32 +0000 (01:42 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Sun, 8 Apr 2007 01:42:32 +0000 (01:42 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r60661 | tilghman | 2007-04-07 20:40:47 -0500 (Sat, 07 Apr 2007) | 10 lines

Merged revisions 60660 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r60660 | tilghman | 2007-04-07 20:39:25 -0500 (Sat, 07 Apr 2007) | 2 lines

Bug 9486 - memory leak when opening a filestream

........

................

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@60662 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/file.c

index e853258..d0be768 100644 (file)
@@ -405,10 +405,15 @@ static int ast_filehelper(const char *filename, const void *arg2, const char *fm
                                s->fmt = f;
                                s->trans = NULL;
                                s->filename = NULL;
-                               if (s->fmt->format < AST_FORMAT_MAX_AUDIO)
+                               if (s->fmt->format < AST_FORMAT_MAX_AUDIO) {
+                                       if (chan->stream)
+                                               ast_closestream(chan->stream);
                                        chan->stream = s;
-                               else
+                               } else {
+                                       if (chan->vstream)
+                                               ast_closestream(chan->vstream);
                                        chan->vstream = s;
+                               }
                                free(fn);
                                break;
                        }
@@ -820,7 +825,7 @@ struct ast_filestream *ast_readfile(const char *filename, const char *type, cons
                    open_wrapper(fs) ) {
                        ast_log(LOG_WARNING, "Unable to open %s\n", fn);
                        if (fs)
-                               free(fs);
+                               ast_free(fs);
                        if (bfile)
                                fclose(bfile);
                        free(fn);
@@ -933,7 +938,7 @@ struct ast_filestream *ast_writefile(const char *filename, const char *type, con
                                        unlink(orig_fn);
                                }
                                if (fs)
-                                       free(fs);
+                                       ast_free(fs);
                        }
                        fs->trans = NULL;
                        fs->fmt = f;