diff --git a/src/kits/media/BufferCache.cpp b/src/kits/media/BufferCache.cpp index 10947df56b..69d5edac34 100644 --- a/src/kits/media/BufferCache.cpp +++ b/src/kits/media/BufferCache.cpp @@ -42,8 +42,10 @@ BufferCache::GetBuffer(media_buffer_id id) buffer_clone_info info; info.buffer = id; BBuffer* buffer = new(std::nothrow) BBuffer(info); - if (buffer == NULL) + if (buffer == NULL || buffer->Data() == NULL) { + delete buffer; return NULL; + } try { fMap.insert(std::make_pair(id, buffer)); diff --git a/src/kits/media/BufferConsumer.cpp b/src/kits/media/BufferConsumer.cpp index 29ae9a2a46..edd5b573d1 100644 --- a/src/kits/media/BufferConsumer.cpp +++ b/src/kits/media/BufferConsumer.cpp @@ -385,14 +385,19 @@ BBufferConsumer::HandleMessage(int32 message, const void* data, size_t size) = static_cast(data); BBuffer* buffer = fBufferCache->GetBuffer(command->buffer); - buffer->SetHeader(&command->header); + if (buffer == NULL) { + ERROR("BBufferConsumer::CONSUMER_BUFFER_RECEIVED can't" + "find the buffer\n"); + } else { + buffer->SetHeader(&command->header); - PRINT(4, "calling BBufferConsumer::BufferReceived buffer %ld at " - "perf %Ld and TimeSource()->Now() is %Ld\n", - buffer->Header()->buffer, buffer->Header()->start_time, - TimeSource()->Now()); + PRINT(4, "calling BBufferConsumer::BufferReceived buffer %ld " + "at perf %Ld and TimeSource()->Now() is %Ld\n", + buffer->Header()->buffer, buffer->Header()->start_time, + TimeSource()->Now()); - BufferReceived(buffer); + BufferReceived(buffer); + } return B_OK; }