[PD-cvs] pd/src s_audio_alsa.c,1.5.4.5.2.2.2.4,1.5.4.5.2.2.2.5
Mathieu Bouchard
matju at users.sourceforge.net
Sat Jun 30 17:32:22 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6279
Modified Files:
Tag: desiredata
s_audio_alsa.c
Log Message:
fixed dangling pointer in alsa_getdevs
Index: s_audio_alsa.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v
retrieving revision 1.5.4.5.2.2.2.4
retrieving revision 1.5.4.5.2.2.2.5
diff -C2 -d -r1.5.4.5.2.2.2.4 -r1.5.4.5.2.2.2.5
*** s_audio_alsa.c 28 Jun 2007 05:37:53 -0000 1.5.4.5.2.2.2.4
--- s_audio_alsa.c 30 Jun 2007 15:32:20 -0000 1.5.4.5.2.2.2.5
***************
*** 677,703 ****
snd_ctl_card_info_t *info;
char devname[80];
! const char *desc;
! if (2 * ndev + 2 > maxndev)
! break;
! /* apparently, "cardno" is just a counter; but check that here */
! if (ndev != cardno)
! fprintf(stderr, "oops: ALSA cards not reported in order?\n");
! sprintf(devname, "hw:%d", cardno );
/* fprintf(stderr, "\ntry %s...\n", devname); */
if (snd_ctl_open(&ctl, devname, 0) >= 0) {
snd_ctl_card_info_malloc(&info);
snd_ctl_card_info(ctl, info);
! desc = snd_ctl_card_info_get_name(info);
snd_ctl_card_info_free(info);
} else {
fprintf(stderr, "ALSA card scan error\n");
! desc = "???";
}
! /* fprintf(stderr, "name: %s\n", snd_ctl_card_info_get_name(info)); */
! sprintf(indevlist + 2*ndev * devdescsize, "%s (hardware)", desc);
! sprintf(indevlist + (2*ndev + 1) * devdescsize, "%s (plug-in)", desc);
! sprintf(outdevlist + 2*ndev * devdescsize, "%s (hardware)", desc);
! sprintf(outdevlist + (2*ndev + 1) * devdescsize, "%s (plug-in)", desc);
ndev++;
}
for (i = 0, j = 2*ndev; i < alsa_nnames; i++, j++) {
--- 677,702 ----
snd_ctl_card_info_t *info;
char devname[80];
! char *desc;
! if (2 * ndev + 2 > maxndev) break;
! /* apparently, "cardno" is just a counter; but check that here */
! if (ndev != cardno) fprintf(stderr, "oops: ALSA cards not reported in order?\n");
! sprintf(devname, "hw:%d", cardno);
/* fprintf(stderr, "\ntry %s...\n", devname); */
if (snd_ctl_open(&ctl, devname, 0) >= 0) {
snd_ctl_card_info_malloc(&info);
snd_ctl_card_info(ctl, info);
! desc = strdup(snd_ctl_card_info_get_name(info));
snd_ctl_card_info_free(info);
} else {
fprintf(stderr, "ALSA card scan error\n");
! desc = strdup("???");
}
! fprintf(stderr, "name: %s\n", desc);
! sprintf(indevlist + 2*ndev * devdescsize, "%s (hardware)", desc);
! sprintf(indevlist + (2*ndev+1) * devdescsize, "%s (plug-in)", desc);
! sprintf(outdevlist + 2*ndev * devdescsize, "%s (hardware)", desc);
! sprintf(outdevlist + (2*ndev+1) * devdescsize, "%s (plug-in)", desc);
ndev++;
+ free(desc);
}
for (i = 0, j = 2*ndev; i < alsa_nnames; i++, j++) {
More information about the Pd-cvs
mailing list