Enlightenment CVS committal Author : devilhorns Project : e_modules Module : mixer
Dir : e_modules/mixer Modified Files: alsa_mixer.c Log Message: Patch from metrics for mem-leak fix. Thanks :) =================================================================== RCS file: /cvs/e/e_modules/mixer/alsa_mixer.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- alsa_mixer.c 18 Sep 2006 11:03:31 -0000 1.24 +++ alsa_mixer.c 17 Oct 2006 03:28:51 -0000 1.25 @@ -283,28 +283,28 @@ if ((err = snd_mixer_open(&handle, 0)) < 0) { printf("Cannot open mixer: %s\n", snd_strerror(err)); - return 0; + goto error; } if ((err = snd_mixer_attach(handle, (char *)card->name)) < 0) { printf("\n\nCannot Attach Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { printf("\n\nCannot Register Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_load(handle)) < 0) { printf("\n\nCannot Load Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) @@ -336,7 +336,12 @@ } snd_mixer_close(handle); + E_FREE(card); return ret; + +error: + E_FREE(card); + return 0; } int @@ -355,28 +360,28 @@ if ((err = snd_mixer_open(&handle, 0)) < 0) { printf("Cannot open mixer: %s\n", snd_strerror(err)); - return 0; + goto error; } if ((err = snd_mixer_attach(handle, (char *)card->name)) < 0) { printf("\n\nCannot Attach Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { printf("\n\nCannot Register Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_load(handle)) < 0) { printf("\n\nCannot Load Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) @@ -399,7 +404,7 @@ if (range == 0) { snd_mixer_close(handle); - return 0; + goto error; } snd_mixer_selem_get_playback_volume_range(elem, &min, &max); @@ -428,7 +433,12 @@ } snd_mixer_close(handle); + E_FREE(card); return 1; + +error: + E_FREE(card); + return 0; } int @@ -447,28 +457,28 @@ if ((err = snd_mixer_open(&handle, 0)) < 0) { printf("Cannot open mixer: %s\n", snd_strerror(err)); - return 0; + goto error; } if ((err = snd_mixer_attach(handle, (char *)card->name)) < 0) { printf("\n\nCannot Attach Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { printf("\n\nCannot Register Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_load(handle)) < 0) { printf("\n\nCannot Load Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) @@ -490,6 +500,7 @@ { snd_mixer_close(handle); mute = alsa_get_volume(card_id, channel_id); + E_FREE(card); if (mute <= 0) return 1; else @@ -499,7 +510,12 @@ } snd_mixer_close(handle); + E_FREE(card); return (mute == 1 ? 0: 1); + +error: + E_FREE(card); + return 0; } int @@ -518,28 +534,28 @@ if ((err = snd_mixer_open(&handle, 0)) < 0) { printf("Cannot open mixer: %s\n", snd_strerror(err)); - return 0; + goto error; } if ((err = snd_mixer_attach(handle, (char *)card->name)) < 0) { printf("\n\nCannot Attach Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_selem_register(handle, NULL, NULL)) < 0) { printf("\n\nCannot Register Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } if ((err = snd_mixer_load(handle)) < 0) { printf("\n\nCannot Load Mixer: %s\n\n", snd_strerror(err)); snd_mixer_close(handle); - return 0; + goto error; } for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) @@ -561,6 +577,7 @@ alsa_set_volume(card_id, channel_id, (0.0 * 100)); else alsa_set_volume(card_id, channel_id, (0.5 * 100)); + E_FREE(card); return 1; } break; @@ -568,7 +585,12 @@ } snd_mixer_close(handle); + E_FREE(card); return 1; + +error: + E_FREE(card); + return 0; } /* Privates */ ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs