Bug 306043
| Summary: | Adopt LIFETIME_BOUND for WTF::Expected | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | David Kilzer (:ddkilzer) <ddkilzer> |
| Component: | Web Template Framework | Assignee: | David Kilzer (:ddkilzer) <ddkilzer> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
David Kilzer (:ddkilzer)
Add LIFETIME_BOUND attribute to operator->, operator*, value(), and error() methods in Expected<T,E> template class to prevent unsafe uses that could lead to dangling references.
The following methods will be updated to include LIFETIME_BOUND:
```cpp
// Pointer access methods
constexpr const value_type* operator->() const LIFETIME_BOUND;
value_type* operator->() LIFETIME_BOUND;
// Reference access methods
constexpr const value_type& operator*() const & LIFETIME_BOUND;
value_type& operator*() & LIFETIME_BOUND;
constexpr const value_type&& operator*() const && LIFETIME_BOUND;
constexpr value_type&& operator*() && LIFETIME_BOUND;
// Value access methods
constexpr const value_type& value() const & LIFETIME_BOUND;
constexpr value_type& value() & LIFETIME_BOUND;
constexpr const value_type&& value() const && LIFETIME_BOUND;
constexpr value_type&& value() && LIFETIME_BOUND;
// Error access methods
constexpr const error_type& error() const & LIFETIME_BOUND;
error_type& error() & LIFETIME_BOUND;
constexpr error_type&& error() && LIFETIME_BOUND;
constexpr const error_type&& error() const && LIFETIME_BOUND;
```
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/168699050>
David Kilzer (:ddkilzer)
Pull request: https://github.com/WebKit/WebKit/pull/57067
EWS
Committed 306108@main (fb63b305a9c2): <https://commits.webkit.org/306108@main>
Reviewed commits have been landed. Closing PR #57067 and removing active labels.