Don't use a VLA for the dest buffer when testing wide FBString to multi-byte FBString
authorChristopher Dykes <cdykes@fb.com>
Sat, 2 Jul 2016 03:34:53 +0000 (20:34 -0700)
committerFacebook Github Bot 5 <facebook-github-bot-5-bot@fb.com>
Sat, 2 Jul 2016 03:38:24 +0000 (20:38 -0700)
Summary: Because MSVC doesn't support VLA's.

Reviewed By: yfeldblum

Differential Revision: D3507441

fbshipit-source-id: a50bdbad31674d236e4994903c75232d70f32bc0

folly/io/async/test/EventBaseTest.cpp
folly/test/FBStringTest.cpp

index d5998bf103775ba879073e0137021a612b5291d4..cfea59919a66b759b807e14e26d3c00b15914c88 100644 (file)
@@ -53,9 +53,10 @@ enum { BUF_SIZE = 4096 };
 
 ssize_t writeToFD(int fd, size_t length) {
   // write an arbitrary amount of data to the fd
-  char buf[length];
-  memset(buf, 'a', sizeof(buf));
-  ssize_t rc = write(fd, buf, sizeof(buf));
+  auto bufv = vector<char>(length);
+  auto buf = bufv.data();
+  memset(buf, 'a', length);
+  ssize_t rc = write(fd, buf, length);
   CHECK_EQ(rc, length);
   return rc;
 }
@@ -79,8 +80,8 @@ size_t writeUntilFull(int fd) {
 
 ssize_t readFromFD(int fd, size_t length) {
   // write an arbitrary amount of data to the fd
-  char buf[length];
-  return read(fd, buf, sizeof(buf));
+  auto buf = vector<char>(length);
+  return read(fd, buf.data(), length);
 }
 
 size_t readUntilEmpty(int fd) {
index 3d39b7733e7c54dee5a8961697e2c2eedccff81d..e8644482e735a53abf3be124e95bc8356892e06c 100644 (file)
@@ -1018,8 +1018,9 @@ TEST(FBString, testAllClauses) {
       rng = RandomT(localSeed);
       f_wfbstring(wc);
       int wret = wcslen(wc.c_str());
-      char mb[wret+1];
-      int ret = wcstombs(mb, wc.c_str(), sizeof(mb));
+      auto mbv = std::vector<char>(wret + 1);
+      auto mb = mbv.data();
+      int ret = wcstombs(mb, wc.c_str(), wret + 1);
       if (ret == wret) mb[wret] = '\0';
       const char *mc = c.c_str();
       std::string one(mb);