From: Takashi Iwai Date: Thu, 11 Aug 2005 12:45:41 +0000 (+0000) Subject: Fix segfault with fcntl() X-Git-Tag: v1.0.10rc1~3 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=459d0d407de664206ef557dc25f0963a9c4fafe0;p=alsa-oss.git Fix segfault with fcntl() - Fixed segfault with fcnt() due to a missing initialization - Make hooks static variables --- diff --git a/alsa/alsa-oss.c b/alsa/alsa-oss.c index ca620e7..df31056 100644 --- a/alsa/alsa-oss.c +++ b/alsa/alsa-oss.c @@ -66,18 +66,18 @@ #define O_LARGEFILE 0100000 #endif -int (*_select)(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); -int (*_poll)(struct pollfd *ufds, unsigned int nfds, int timeout); -int (*_open)(const char *file, int oflag, ...); -int (*_close)(int fd); -ssize_t (*_write)(int fd, const void *buf, size_t n); -ssize_t (*_read)(int fd, void *buf, size_t n); -int (*_ioctl)(int fd, unsigned long request, ...); -int (*_fcntl)(int fd, int cmd, ...); -void *(*_mmap)(void *addr, size_t len, int prot, int flags, int fd, off_t offset); -int (*_munmap)(void* addr, size_t len); - -FILE *(*_fopen)(const char *path, const char *mode); +static int (*_select)(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +static int (*_poll)(struct pollfd *ufds, unsigned int nfds, int timeout); +static int (*_open)(const char *file, int oflag, ...); +static int (*_close)(int fd); +static ssize_t (*_write)(int fd, const void *buf, size_t n); +static ssize_t (*_read)(int fd, void *buf, size_t n); +static int (*_ioctl)(int fd, unsigned long request, ...); +static int (*_fcntl)(int fd, int cmd, ...); +static void *(*_mmap)(void *addr, size_t len, int prot, int flags, int fd, off_t offset); +static int (*_munmap)(void* addr, size_t len); + +static FILE *(*_fopen)(const char *path, const char *mode); typedef struct ops { int (*close)(int fd); @@ -346,6 +346,9 @@ int fcntl(int fd, int cmd, ...) va_list args; void *arg; + if (!initialized) + initialize(); + va_start(args, cmd); arg = va_arg(args, void *); va_end(args);