/*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2016-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
str.reserve(size_t(len));
- size_t available = curs.length();
+ // peekBytes will advance over any "empty" IOBuf elements until
+ // it reaches the next one with data, so do that to obtain the
+ // true remaining length.
+ size_t available = curs.peekBytes().size();
while (available < (size_t)len) {
if (available == 0) {
// Saw this case when we decodeHeader was returning the incorrect length
str.append(reinterpret_cast<const char*>(curs.data()), available);
curs.skipAtMost(available);
len -= available;
- available = curs.length();
+ available = curs.peekBytes().size();
}
str.append(reinterpret_cast<const char*>(curs.data()), size_t(len));
folly::dynamic parseBser(StringPiece str) {
return parseBser(ByteRange((uint8_t*)str.data(), str.size()));
}
-}
-}
+} // namespace bser
+} // namespace folly
/* vim:ts=2:sw=2:et:
*/