Skip to content

Commit

Permalink
[ALSA] emux - Avoid cast of function pointers
Browse files Browse the repository at this point in the history
Modules: Common EMU synth

Pass the proper functions instead of cast of function pointers, which
can be dangerous with compiler optimizations.

Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
tiwai authored and Jaroslav Kysela committed Jan 3, 2006
1 parent cb43237 commit a57d151
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions sound/synth/emux/emux.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,29 @@ int snd_emux_new(snd_emux_t **remu)

/*
*/
static int sf_sample_new(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr,
const void __user *buf, long count)
{
snd_emux_t *emu = private_data;
return emu->ops.sample_new(emu, sp, hdr, buf, count);

}

static int sf_sample_free(void *private_data, snd_sf_sample_t *sp,
snd_util_memhdr_t *hdr)
{
snd_emux_t *emu = private_data;
return emu->ops.sample_free(emu, sp, hdr);

}

static void sf_sample_reset(void *private_data)
{
snd_emux_t *emu = private_data;
emu->ops.sample_reset(emu);
}

int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
{
int err;
Expand All @@ -85,9 +108,12 @@ int snd_emux_register(snd_emux_t *emu, snd_card_t *card, int index, char *name)
/* create soundfont list */
memset(&sf_cb, 0, sizeof(sf_cb));
sf_cb.private_data = emu;
sf_cb.sample_new = (snd_sf_sample_new_t)emu->ops.sample_new;
sf_cb.sample_free = (snd_sf_sample_free_t)emu->ops.sample_free;
sf_cb.sample_reset = (snd_sf_sample_reset_t)emu->ops.sample_reset;
if (emu->ops.sample_new)
sf_cb.sample_new = sf_sample_new;
if (emu->ops.sample_free)
sf_cb.sample_free = sf_sample_free;
if (emu->ops.sample_reset)
sf_cb.sample_reset = sf_sample_reset;
emu->sflist = snd_sf_new(&sf_cb, emu->memhdr);
if (emu->sflist == NULL)
return -ENOMEM;
Expand Down

0 comments on commit a57d151

Please sign in to comment.