]> git.alsa-project.org Git - alsa-lib.git/commitdiff
mixer - fix typo and memory leak
authorJaroslav Kysela <perex@perex.cz>
Fri, 3 Jun 2005 14:04:53 +0000 (14:04 +0000)
committerJaroslav Kysela <perex@perex.cz>
Fri, 3 Jun 2005 14:04:53 +0000 (14:04 +0000)
include/mixer.h
src/mixer/simple_none.c

index ac2db33d8d6ab59b5c9e4ce06e65a452df8f4edd..a5d8ef157cc1dc7c8ccaf93b911cfd1b0084484f 100644 (file)
@@ -144,7 +144,7 @@ size_t snd_mixer_class_sizeof(void);
  * \brief allocate an invalid #snd_mixer_class_t using standard alloca
  * \param ptr returned pointer
  */
-#define snd_mixer_class_alloca(ptr) do { assert(ptr); *ptr = (snd_mixer_selem_id_t *) alloca(snd_mixer_class_sizeof()); memset(*ptr, 0, snd_mixer_class_sizeof()); } while (0)
+#define snd_mixer_class_alloca(ptr) do { assert(ptr); *ptr = (snd_mixer_class_t *) alloca(snd_mixer_class_sizeof()); memset(*ptr, 0, snd_mixer_class_sizeof()); } while (0)
 int snd_mixer_class_malloc(snd_mixer_class_t **ptr);
 void snd_mixer_class_free(snd_mixer_class_t *obj);
 void snd_mixer_class_copy(snd_mixer_class_t *dst, const snd_mixer_class_t *src);
index 37b6ea57e41f53c4ef0fe9f7fab20fbf5adcff2c..5f5801bde6aea9f5955ae3abea7973ba03d3e3df 100644 (file)
@@ -598,7 +598,10 @@ static int selem_write(snd_mixer_elem_t *elem)
 static void selem_free(snd_mixer_elem_t *elem)
 {
        assert(snd_mixer_elem_get_type(elem) == SND_MIXER_ELEM_SIMPLE);
-       free(snd_mixer_elem_get_private(elem));
+       selem_none_t *simple = snd_mixer_elem_get_private(elem);
+       if (simple->selem.id)
+               snd_mixer_selem_id_free(simple->selem.id);
+       free(simple);
 }
 
 static int simple_update(snd_mixer_elem_t *melem)