Update of /usr/cvsroot/asterisk/res
In directory mongoose.digium.com:/tmp/cvs-serv3795/res

Modified Files:
      Tag: v1-0
        res_musiconhold.c 
Log Message:
prevent mem leak (bug #4842)


Index: res_musiconhold.c
===================================================================
RCS file: /usr/cvsroot/asterisk/res/res_musiconhold.c,v
retrieving revision 1.39.2.3
retrieving revision 1.39.2.4
diff -u -d -r1.39.2.3 -r1.39.2.4
--- res_musiconhold.c   8 Jan 2005 21:54:24 -0000       1.39.2.3
+++ res_musiconhold.c   4 Aug 2005 23:45:54 -0000       1.39.2.4
@@ -108,6 +108,21 @@
 #define MPG_123 "/usr/bin/mpg123"
 #define MAX_MP3S 256
 
+
+static void ast_moh_free_class(struct mohclass **class) 
+{
+       struct mohdata *members, *mtmp;
+       
+       members = (*class)->members;
+       while(members) {
+               mtmp = members;
+               members = members->next;
+               free(mtmp);
+       }
+       free(*class);
+       *class = NULL;
+}
+
 static int spawn_mp3(struct mohclass *class)
 {
        int fds[2];
@@ -574,12 +589,12 @@
                        ast_log(LOG_WARNING, "Unable to create moh...\n");
                        if (moh->pseudofd > -1)
                                close(moh->pseudofd);
-                       free(moh);
+                       ast_moh_free_class(&moh);
                        return -1;
                }
        } else {
                ast_log(LOG_WARNING, "Don't know how to do a mode '%s' music on 
hold\n", mode);
-               free(moh);
+               ast_moh_free_class(&moh);
                return -1;
        }
        ast_mutex_lock(&moh_lock);

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to