OSDN Git Service

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 ac2db33..a5d8ef1 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 37b6ea5..5f5801b 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)