]> git.alsa-project.org Git - alsa-oss.git/commitdiff
Fix segfault with fcntl()
authorTakashi Iwai <tiwai@suse.de>
Thu, 11 Aug 2005 12:45:41 +0000 (12:45 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 11 Aug 2005 12:45:41 +0000 (12:45 +0000)
- Fixed segfault with fcnt() due to a missing initialization
- Make hooks static variables

alsa/alsa-oss.c

index ca620e7a88cabe470c0e9a59e21348516f0d690a..df310569fa69cdb8102026fcccac448e03156eb2 100644 (file)
 #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);