Test: fix build error.
diff --git a/snappy.cc b/snappy.cc
index 5457377..63c8432 100644
--- a/snappy.cc
+++ b/snappy.cc
@@ -2041,7 +2041,7 @@
                          std::string* compressed) {
   // Compute the number of bytes to be compressed.
   size_t uncompressed_length = 0;
-  for (int i = 0; i < iov_cnt; ++i) {
+  for (size_t i = 0; i < iov_cnt; ++i) {
     uncompressed_length += iov[i].iov_len;
   }
 
diff --git a/snappy_benchmark.cc b/snappy_benchmark.cc
index 0590142..e452855 100644
--- a/snappy_benchmark.cc
+++ b/snappy_benchmark.cc
@@ -158,21 +158,22 @@
   std::string contents =
       ReadTestDataFile(kTestDataFiles[file_index].filename,
                        kTestDataFiles[file_index].size_limit);
+  std::vector<char> contents_copy(contents.begin(), contents.end());
 
   // Create `iovec`s of the `contents`.
   const int kNumEntries = 10;
   struct iovec iov[kNumEntries];
   size_t used_so_far = 0;
   for (int i = 0; i < kNumEntries; ++i) {
-    iov[i].iov_base = contents.data() + used_so_far;
-    if (used_so_far == contents.size()) {
+    iov[i].iov_base = contents_copy.data() + used_so_far;
+    if (used_so_far == contents_copy.size()) {
       iov[i].iov_len = 0;
       continue;
     }
     if (i == kNumEntries - 1) {
-      iov[i].iov_len = contents.size() - used_so_far;
+      iov[i].iov_len = contents_copy.size() - used_so_far;
     } else {
-      iov[i].iov_len = contents.size() / kNumEntries;
+      iov[i].iov_len = contents_copy.size() / kNumEntries;
     }
     used_so_far += iov[i].iov_len;
   }
diff --git a/snappy_unittest.cc b/snappy_unittest.cc
index aeb8044..005fa42 100644
--- a/snappy_unittest.cc
+++ b/snappy_unittest.cc
@@ -169,7 +169,7 @@
 
 int VerifyIOVecSource(const std::string& input) {
   std::string compressed;
-  std::string copy = input;
+  std::vector<char> copy(input.begin(), input.end());
   char* buf = copy.data();
   size_t num = 0;
   struct iovec* iov = GetIOVec(input, buf, num);
@@ -567,8 +567,8 @@
 TEST(Snappy, IOVecSourceEdgeCases) {
   // Validate that empty leading, trailing, and in-between iovecs are handled:
   // [] [] ['a'] [] ['b'] [].
-  std::string data = "ab";
-  char* buf = data.data();
+  char data[3] = "ab";
+  char* buf = data;
   size_t used_so_far = 0;
   static const int kLengths[] = {0, 0, 1, 0, 1, 0};
   struct iovec iov[ARRAYSIZE(kLengths)];
diff --git a/third_party/benchmark b/third_party/benchmark
index bf585a2..49aa374 160000
--- a/third_party/benchmark
+++ b/third_party/benchmark
@@ -1 +1 @@
-Subproject commit bf585a2789e30585b4e3ce6baf11ef2750b54677
+Subproject commit 49aa374da96199d64fd3de9673b6f405bbc3de3e