Ticket #5290: libs_libmythtv-check-pthread_create.patch

File libs_libmythtv-check-pthread_create.patch, 2.5 KB (added by Erik Hovland <erik@…>, 16 years ago)
  • libs/libmythtv/RingBuffer.cpp

    Make sure that pthread_create is checked.
    
    From: Erik Hovland <erik@hovland.org>
    
    
    ---
    
     libs/libmythtv/RingBuffer.cpp       |    7 ++++++-
     libs/libmythtv/dvbstreamhandler.cpp |   10 ++++++++--
     libs/libmythtv/signalmonitor.cpp    |    9 ++++++++-
     3 files changed, 22 insertions(+), 4 deletions(-)
    
    diff --git a/libs/libmythtv/RingBuffer.cpp b/libs/libmythtv/RingBuffer.cpp
    index 47baee0..ed8cd2c 100644
    a b void RingBuffer::StartupReadAheadThread(void) 
    631631    readaheadrunning = false;
    632632
    633633    readAheadRunningCondLock.lock();
    634     pthread_create(&reader, NULL, StartReader, this);
     634    int rval = pthread_create(&reader, NULL, StartReader, this);
     635    if (rval != 0) {
     636        VERBOSE(VB_IMPORTANT, QString("RingBuffer::StartupReadAheadThread: "
     637                "pthread_create failed with %1").arg(strerror(rval)));
     638        return;
     639    }
    635640    readAheadRunningCond.wait(&readAheadRunningCondLock);
    636641    readAheadRunningCondLock.unlock();
    637642}
  • libs/libmythtv/dvbstreamhandler.cpp

    diff --git a/libs/libmythtv/dvbstreamhandler.cpp b/libs/libmythtv/dvbstreamhandler.cpp
    index 30b911e..18f6d11 100644
    a b void DVBStreamHandler::Start(void) 
    189189    if (!IsRunning())
    190190    {
    191191        QMutex is_running_lock;
    192         pthread_create(&_reader_thread, NULL,
    193                        run_dvb_stream_handler_thunk, this);
     192        int rval = pthread_create(&_reader_thread, NULL,
     193                                  run_dvb_stream_handler_thunk, this);
     194        if (rval < 0)
     195        {
     196            VERBOSE(VB_IMPORTANT, LOC_ERR + QString("DVBStreamHandler::Start - "
     197                    "failed creating thread. Error %1").arg(strerror(errno)));
     198            return;
     199        }
    194200
    195201        while (!IsRunning())
    196202        {
  • libs/libmythtv/signalmonitor.cpp

    diff --git a/libs/libmythtv/signalmonitor.cpp b/libs/libmythtv/signalmonitor.cpp
    index c376cec..f18e99b 100644
    a b void SignalMonitor::Start() 
    205205    {
    206206        QMutexLocker locker(&startStopLock);
    207207        if (!running)
    208             pthread_create(&monitor_thread, NULL, SpawnMonitorLoop, this);
     208        {
     209            if (pthread_create(&monitor_thread, NULL, SpawnMonitorLoop, this) == -1)
     210            {
     211                VERBOSE(VB_IMPORTANT, "Failed to create signal monitor thread");
     212                return;
     213            }
     214        }
     215
    209216        while (!running)
    210217            usleep(50);
    211218    }