================
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -std=c++20 -Wunsafe-buffer-usage -verify %s
+
+namespace std {
+  template <typename T>
+  class basic_string_view {
+  public:
+    basic_string_view(T*, int);
+    basic_string_view(T*);
+  };
+  
+  using string_view = basic_string_view<char>;
+}
+
+void test(char *ptr, int size) {
+  // CASE 1: Unsafe (Ptr + Size) -> Should Warn
+  std::string_view sv1(ptr, size); // expected-warning{{the two-parameter 
std::string_view construction is unsafe as it can introduce mismatch between 
buffer size and the bound information}}
+  // CASE 2: Safe (Ptr only) -> Should NOT Warn
+  std::string_view sv2(ptr);
----------------
rohanjr wrote:

Should we test the [other string_view 
constructors](https://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view.html)?
 I'm specifically wondering about the `basic_string_view(It first, End last)`, 
which also has 2 parameters. Do we consider it safe?

https://github.com/llvm/llvm-project/pull/180471
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to