aboutsummaryrefslogtreecommitdiffstats
path: root/alc/backends/oss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/backends/oss.cpp')
-rw-r--r--alc/backends/oss.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/alc/backends/oss.cpp b/alc/backends/oss.cpp
index 4cff5959..196744b0 100644
--- a/alc/backends/oss.cpp
+++ b/alc/backends/oss.cpp
@@ -249,7 +249,7 @@ struct OSSPlayback final : public BackendBase {
OSSPlayback::~OSSPlayback()
{
if(mFd != -1)
- close(mFd);
+ ::close(mFd);
mFd = -1;
}
@@ -328,11 +328,15 @@ void OSSPlayback::open(const char *name)
devname = iter->device_name.c_str();
}
- mFd = ::open(devname, O_WRONLY);
- if(mFd == -1)
+ int fd{::open(devname, O_WRONLY)};
+ if(fd == -1)
throw al::backend_exception{al::backend_error::NoDevice, "Could not open %s: %s", devname,
strerror(errno)};
+ if(mFd != -1)
+ ::close(mFd);
+ mFd = fd;
+
mDevice->DeviceName = name;
}