diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 52278f7..1ca9fae 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -555,10 +555,11 @@
   QuicTransportVersionVector all_versions = {QUIC_VERSION_43};
   int version_count = all_versions.size();
   for (int i = -5; i <= version_count + 1; ++i) {
+    QuicTransportVersionVector index = VersionOfIndex(all_versions, i);
     if (i >= 0 && i < version_count) {
-      EXPECT_EQ(all_versions[i], VersionOfIndex(all_versions, i)[0]);
+      EXPECT_EQ(all_versions[i], index[0]);
     } else {
-      EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, VersionOfIndex(all_versions, i)[0]);
+      EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, index[0]);
     }
   }
 }
@@ -567,11 +568,11 @@
   ParsedQuicVersionVector all_versions = AllSupportedVersions();
   int version_count = all_versions.size();
   for (int i = -5; i <= version_count + 1; ++i) {
+    ParsedQuicVersionVector index = ParsedVersionOfIndex(all_versions, i);
     if (i >= 0 && i < version_count) {
-      EXPECT_EQ(all_versions[i], ParsedVersionOfIndex(all_versions, i)[0]);
+      EXPECT_EQ(all_versions[i], index[0]);
     } else {
-      EXPECT_EQ(UnsupportedQuicVersion(),
-                ParsedVersionOfIndex(all_versions, i)[0]);
+      EXPECT_EQ(UnsupportedQuicVersion(), index[0]);
     }
   }
 }
@@ -704,7 +705,8 @@
          SupportedTransportVersions()) {
       SCOPED_TRACE(index);
       if (ParsedQuicVersionIsValid(handshake_protocol, transport_version)) {
-        EXPECT_EQ(SupportedVersions()[index],
+        ParsedQuicVersion version = SupportedVersions()[index];
+        EXPECT_EQ(version,
                   ParsedQuicVersion(handshake_protocol, transport_version));
         index++;
       }
diff --git a/quic/core/tls_chlo_extractor_test.cc b/quic/core/tls_chlo_extractor_test.cc
index ba57ad0..955e58c 100644
--- a/quic/core/tls_chlo_extractor_test.cc
+++ b/quic/core/tls_chlo_extractor_test.cc
@@ -48,8 +48,9 @@
 
   void ValidateChloDetails() {
     EXPECT_TRUE(tls_chlo_extractor_.HasParsedFullChlo());
-    ASSERT_EQ(tls_chlo_extractor_.alpns().size(), 1u);
-    EXPECT_EQ(tls_chlo_extractor_.alpns()[0], AlpnForVersion(version_));
+    std::vector<std::string> alpns = tls_chlo_extractor_.alpns();
+    ASSERT_EQ(alpns.size(), 1u);
+    EXPECT_EQ(alpns[0], AlpnForVersion(version_));
     EXPECT_EQ(tls_chlo_extractor_.server_name(), TestHostname());
   }
 
diff --git a/quic/quartc/quartc_fakes.h b/quic/quartc/quartc_fakes.h
index 94bf1ad..774cd09 100644
--- a/quic/quartc/quartc_fakes.h
+++ b/quic/quartc/quartc_fakes.h
@@ -148,7 +148,7 @@
   void OnBufferChanged(QuartcStream* /*stream*/) override {}
 
   bool has_data() { return !received_data_.empty(); }
-  std::map<QuicStreamId, std::string> data() { return received_data_; }
+  std::map<QuicStreamId, std::string>& data() { return received_data_; }
 
   QuicRstStreamErrorCode stream_error(QuicStreamId id) { return errors_[id]; }
 
