bugfix: MediaSource 经 listener->getMuxer() 的空指针竞态崩溃 (#4775)

This commit is contained in:
GW.J
2026-07-13 11:02:39 +08:00
committed by GitHub
parent 1b4f3ef9a1
commit fcdd7bd990
2 changed files with 5 additions and 2 deletions

View File

@@ -238,7 +238,10 @@ toolkit::EventPoller::Ptr MediaSource::getOwnerPoller() {
std::shared_ptr<MultiMediaSourceMuxer> MediaSource::getMuxer() const { std::shared_ptr<MultiMediaSourceMuxer> MediaSource::getMuxer() const {
auto listener = _listener.lock(); auto listener = _listener.lock();
return listener ? listener->getMuxer(const_cast<MediaSource&>(*this)) : nullptr; if (listener) {
return listener->getMuxer(const_cast<MediaSource &>(*this));
}
throw std::runtime_error("MediaSourceEvent is empty");
} }
std::shared_ptr<RtpProcess> MediaSource::getRtpProcess() const { std::shared_ptr<RtpProcess> MediaSource::getRtpProcess() const {

View File

@@ -96,7 +96,7 @@ public:
// 获取MultiMediaSourceMuxer对象 [AUTO-TRANSLATED:2de96d44] // 获取MultiMediaSourceMuxer对象 [AUTO-TRANSLATED:2de96d44]
// Get MultiMediaSourceMuxer object // Get MultiMediaSourceMuxer object
virtual std::shared_ptr<MultiMediaSourceMuxer> getMuxer(MediaSource &sender) const { return nullptr; } virtual std::shared_ptr<MultiMediaSourceMuxer> getMuxer(MediaSource &sender) const { throw NotImplemented(toolkit::demangle(typeid(*this).name()) + "::getMuxer not implemented"); }
// 获取RtpProcess对象 [AUTO-TRANSLATED:c6b7da43] // 获取RtpProcess对象 [AUTO-TRANSLATED:c6b7da43]
// Get RtpProcess object // Get RtpProcess object
virtual std::shared_ptr<RtpProcess> getRtpProcess(MediaSource &sender) const { return nullptr; } virtual std::shared_ptr<RtpProcess> getRtpProcess(MediaSource &sender) const { return nullptr; }