Fix various SCONE-related builder errors

-   In scone.h, use absl::NoDestructor for a static vector to ensure safe initialization and destruction.
-   In quic_dispatcher_test.cc, remove an extra semicolon.
-   In end_to_end_test.cc, cast buffer to uint8_t* for byte-level access.

These issues are causing us to not be able to roll QUICHE to Chromium.

PiperOrigin-RevId: 896778658
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index a4091fd..33ba639 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -4802,7 +4802,8 @@
         observed_scone_endpoints_.contains(peer_address.host())) {
       return true;
     }
-    if (*(buffer - 2) == 0xc8 && *(buffer - 1) == 0x13) {
+    const uint8_t* ubuffer = reinterpret_cast<const uint8_t*>(buffer);
+    if (*(ubuffer - 2) == 0xc8 && *(ubuffer - 1) == 0x13) {
       // Indicator is present, record the flow.
       observed_scone_endpoints_.insert(peer_address.host());
       return true;
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc
index d98fb0c..0b18328 100644
--- a/quiche/quic/core/quic_dispatcher_test.cc
+++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -928,7 +928,7 @@
   EXPECT_CALL(*dispatcher_, CreateQuicSession).Times(0);
   EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket).Times(1);
   dispatcher_->ProcessPacket(server_address_, client_address, *packet);
-};
+}
 
 TEST_P(QuicDispatcherTestOneVersion,
        StatelessVersionNegotiationWithVeryLongConnectionId) {
diff --git a/quiche/quic/core/scone.h b/quiche/quic/core/scone.h
index f20338d..5b693da 100644
--- a/quiche/quic/core/scone.h
+++ b/quiche/quic/core/scone.h
@@ -11,6 +11,7 @@
 #include <cstdint>
 #include <vector>
 
+#include "absl/base/no_destructor.h"
 #include "quiche/quic/core/quic_bandwidth.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_versions.h"
@@ -31,7 +32,7 @@
 // is unknown.
 // Returns the SCONE bandwidth table. Initialized once on first use.
 inline const std::vector<QuicBandwidth>& GetSconeBandwidths() {
-  static const std::vector<QuicBandwidth> kBandwidths = [] {
+  static const absl::NoDestructor<std::vector<QuicBandwidth>> kBandwidths([] {
     std::vector<QuicBandwidth> v;
     v.reserve(kNumSconeBandwidths);
     double factor = 1.0;
@@ -42,8 +43,8 @@
       factor *= multiplier;
     }
     return v;
-  }();
-  return kBandwidths;
+  }());
+  return *kBandwidths;
 }
 
 }  // namespace quic