diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index b0191fbd..f391da7b 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -2081,7 +2081,9 @@ namespace DTSC { bool Meta::toFile(const std::string & fileName){ std::ofstream oFile(fileName.c_str()); oFile << toJSON().toNetPacked(); + if (!oFile.good()){return false;} oFile.close(); + return true; } ///\brief Converts a meta object to a human readable string diff --git a/lib/shared_memory.cpp b/lib/shared_memory.cpp index 2752b1c5..a8afe767 100644 --- a/lib/shared_memory.cpp +++ b/lib/shared_memory.cpp @@ -223,6 +223,7 @@ namespace IPC { ///\brief Tries to wait for the semaphore, returns true if successful, false otherwise bool semaphore::tryWait() { + if (!(*this)){return false;} int result; #if defined(__CYGWIN__) || defined(_WIN32) result = WaitForSingleObject(mySem, 0);//wait at most 1ms @@ -238,6 +239,7 @@ namespace IPC { ///\brief Tries to wait for the semaphore for a single second, returns true if successful, false otherwise bool semaphore::tryWaitOneSecond() { + if (!(*this)){return false;} int result; #if defined(__CYGWIN__) || defined(_WIN32) result = WaitForSingleObject(mySem, 1000);//wait at most 1s diff --git a/src/input/input.cpp b/src/input/input.cpp index 8227ae55..982b858c 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -341,6 +341,10 @@ namespace Mist { void Input::stream(){ IPC::semaphore pullLock; pullLock.open(std::string("/MstPull_" + streamName).c_str(), O_CREAT | O_RDWR, ACCESSPERMS, 1); + if (!pullLock){ + FAIL_MSG("Could not open pull lock for stream '%s' - aborting!", streamName.c_str()); + return; + } if (!pullLock.tryWait()){ WARN_MSG("A pull process for stream %s is already running", streamName.c_str()); pullLock.close();