diff options
author | Abseil Team <absl-team@google.com> | 2020-01-31 10:09:12 -0800 |
---|---|---|
committer | Gennadiy Rozental <rogeeff@google.com> | 2020-01-31 17:10:19 -0500 |
commit | 0f86336b6939ea673cc1cbe29189286cae67d63a (patch) | |
tree | af3e02fa702f5ef5a82c2fc22f4ce52707c5c047 /absl/strings/string_view.h | |
parent | c512f118dde6ffd51cb7d8ac8804bbaf4d266c3a (diff) |
Export of internal Abseil changes
--
0b924fe4e9871200792617329d32beb8356daa9b by Derek Mauro <dmauro@google.com>:
Use less threads in the GetTID() test to avoid test timeouts
PiperOrigin-RevId: 292566826
--
0b519c4fd48d61b7c4ea94ed6a6be6e981b9c51a by Abseil Team <absl-team@google.com>:
Internal change.
PiperOrigin-RevId: 292563778
--
3204f6e07bcc2b5e9098d45f1a20998f25ab808e by Abseil Team <absl-team@google.com>:
Internal change.
PiperOrigin-RevId: 292550551
--
09fbbe73833478d3f26f3e33c8291b991fd3be51 by Derek Mauro <dmauro@google.com>:
Add a debug bounds-check to absl::string_view::operator[]
string_view accesses that are out-of-bounds are undefined behavior:
https://en.cppreference.com/w/cpp/string/basic_string_view/operator_at
This change causes code to abort in debug mode, indicating a bug and
possibly a security issue like a buffer overflow. Code broken by this
change should be investigated.
PiperOrigin-RevId: 292544735
--
bf2c19cb45682628f963d4067c0cd6deed7e656d by Derek Mauro <dmauro@google.com>:
Add debug assertions to absl::string_view::front and absl::string_view::back
Calling front() or back() on an empty string_view is undefined behavior. This
assertion is to help catch broken code.
https://en.cppreference.com/w/cpp/string/basic_string_view/front
https://en.cppreference.com/w/cpp/string/basic_string_view/back
PiperOrigin-RevId: 292453255
--
47f573679b322f8c0fd2cb037cc87e7bc822ac6b by Xiaoyi Zhang <zhangxy@google.com>:
Release functional/CMakeList.txt.
PiperOrigin-RevId: 292417025
GitOrigin-RevId: 0b924fe4e9871200792617329d32beb8356daa9b
Change-Id: Ie6980fb1ac351d72a2ce4468f25bd31db396f88a
Diffstat (limited to 'absl/strings/string_view.h')
-rw-r--r-- | absl/strings/string_view.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/absl/strings/string_view.h b/absl/strings/string_view.h index 01965b0e..418dbc80 100644 --- a/absl/strings/string_view.h +++ b/absl/strings/string_view.h @@ -282,7 +282,9 @@ class string_view { // // Returns the ith element of the `string_view` using the array operator. // Note that this operator does not perform any bounds checking. - constexpr const_reference operator[](size_type i) const { return ptr_[i]; } + constexpr const_reference operator[](size_type i) const { + return ABSL_ASSERT(i < size()), ptr_[i]; + } // string_view::at() // @@ -300,12 +302,16 @@ class string_view { // string_view::front() // // Returns the first element of a `string_view`. - constexpr const_reference front() const { return ptr_[0]; } + constexpr const_reference front() const { + return ABSL_ASSERT(!empty()), ptr_[0]; + } // string_view::back() // // Returns the last element of a `string_view`. - constexpr const_reference back() const { return ptr_[size() - 1]; } + constexpr const_reference back() const { + return ABSL_ASSERT(!empty()), ptr_[size() - 1]; + } // string_view::data() // |