mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:57:34 +00:00
LibWeb: Fix a blatant nullptr dereference in ReadableStreamGenericReader
This commit is contained in:
parent
9ee64b5694
commit
2b269d4a49
3 changed files with 12 additions and 3 deletions
|
@ -32,6 +32,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<ReadableStreamDefaultReader>> ReadableStrea
|
|||
|
||||
ReadableStreamDefaultReader::ReadableStreamDefaultReader(JS::Realm& realm)
|
||||
: Bindings::PlatformObject(realm)
|
||||
, ReadableStreamGenericReaderMixin(realm)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -26,9 +26,8 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::Promise>> ReadableStreamGenericReaderMi
|
|||
{
|
||||
// 1. If this.[[stream]] is undefined, return a promise rejected with a TypeError exception.
|
||||
if (!m_stream) {
|
||||
auto& realm = stream()->realm();
|
||||
auto exception = MUST_OR_THROW_OOM(JS::TypeError::create(realm, "No stream present to cancel"sv));
|
||||
auto promise_capability = WebIDL::create_rejected_promise(realm, exception);
|
||||
auto exception = MUST_OR_THROW_OOM(JS::TypeError::create(m_realm, "No stream present to cancel"sv));
|
||||
auto promise_capability = WebIDL::create_rejected_promise(m_realm, exception);
|
||||
return JS::NonnullGCPtr { verify_cast<JS::Promise>(*promise_capability->promise().ptr()) };
|
||||
}
|
||||
|
||||
|
@ -37,6 +36,11 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::Promise>> ReadableStreamGenericReaderMi
|
|||
return JS::NonnullGCPtr { verify_cast<JS::Promise>(*promise_capability->promise().ptr()) };
|
||||
}
|
||||
|
||||
ReadableStreamGenericReaderMixin::ReadableStreamGenericReaderMixin(JS::Realm& realm)
|
||||
: m_realm(realm)
|
||||
{
|
||||
}
|
||||
|
||||
void ReadableStreamGenericReaderMixin::visit_edges(JS::Cell::Visitor& visitor)
|
||||
{
|
||||
visitor.visit(m_closed_promise);
|
||||
|
|
|
@ -32,6 +32,8 @@ public:
|
|||
virtual bool is_default_reader() const { return false; }
|
||||
|
||||
protected:
|
||||
explicit ReadableStreamGenericReaderMixin(JS::Realm&);
|
||||
|
||||
void visit_edges(JS::Cell::Visitor&);
|
||||
|
||||
// https://streams.spec.whatwg.org/#readablestreamgenericreader-closedpromise
|
||||
|
@ -41,6 +43,8 @@ protected:
|
|||
// https://streams.spec.whatwg.org/#readablestreamgenericreader-stream
|
||||
// A ReadableStream instance that owns this reader
|
||||
JS::GCPtr<ReadableStream> m_stream;
|
||||
|
||||
JS::Realm& m_realm;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue