From 459d0d407de664206ef557dc25f0963a9c4fafe0 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 11 Aug 2005 12:45:41 +0000 Subject: [PATCH] Fix segfault with fcntl() - Fixed segfault with fcnt() due to a missing initialization - Make hooks static variables --- alsa/alsa-oss.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) 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); -- 2.47.1