Mercurial > mplayer.hg
view libdha/sysdep/pci_freebsd.c @ 18708:9e2b300db17b
Change free_sh_audio() to take demuxer and stream id as parameters
(same as new_sh_audio()) instead of sh_audio_t *, use those to remove
the pointer from demuxer->a_streams[] before freeing it.
Some demuxers use free_sh_audio() to undo the creation of an
already-allocated audio stream in case of error. These uses were unsafe
since free_sh_audio() freed the data structure but left the pointer in
demuxer->a_streams[], leading to double free later in free_demuxer()
(and perhaps use of the freed stream before that, I didn't check).
author | uau |
---|---|
date | Wed, 14 Jun 2006 14:05:59 +0000 |
parents | 806cd20f1c8f |
children |
line wrap: on
line source
/* This file is based on: $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.34.2.17 1998/11/10 11:55:40 dawes Exp $ Modified for readability by Nick Kurshev */ #include <errno.h> #include <sys/file.h> #include <sys/kbio.h> #ifndef GCCUSESGAS #define GCCUSESGAS #endif static int io_fd; static __inline__ int enable_os_io(void) { io_fd = -1 ; if ((io_fd = open("/dev/console", O_RDWR, 0)) < 0) { perror("/dev/console"); return(errno); } if (ioctl(io_fd, KDENABIO, 0) < 0) { perror("ioctl(KDENABIO)"); return(errno); } return(0); } static __inline__ int disable_os_io(void) { if (ioctl(io_fd, KDDISABIO, 0) < 0) { perror("ioctl(KDDISABIO)"); close(io_fd); return(errno); } close(io_fd); return(0); }