Make OSS_CloseDevice more resilient

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




This is to prevent things from going wrong in weird ways if OSS_CloseDevice is called more than OSS_OpenDevice.

Changelog:

Francois Gouget <fgouget@codeweavers.com>

* dlls/winmm/wineoss/audio.c

Warn if open_count is already 0 when OSS_CloseDevice is called.
Don't decrement it in that case.


--
Francois Gouget
fgouget@codeweavers.com

Index: dlls/winmm/wineoss/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/audio.c,v
retrieving revision 1.71
diff -u -r1.71 audio.c
--- dlls/winmm/wineoss/audio.c	11 Jan 2003 22:47:51 -0000	1.71
+++ dlls/winmm/wineoss/audio.c	14 Jan 2003 19:16:32 -0000
@@ -374,7 +449,12 @@
  */
 static void	OSS_CloseDevice(OSS_DEVICE* ossdev)
 {
-    if (--ossdev->open_count == 0)
+    if (ossdev->open_count>0) {
+        ossdev->open_count--;
+    } else {
+        WARN("OSS_CloseDevice called too many times\n");
+    }
+    if (ossdev->open_count == 0)
     {
        /* reset the device before we close it in case it is in a bad state */
        ioctl(ossdev->fd, SNDCTL_DSP_RESET, 0);

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux