/*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2015 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
#include <stdarg.h>
+#include <algorithm>
#include <folly/GroupVarint.h>
// On platforms where it's not supported, GroupVarint will be compiled out.
EXPECT_EQ(expectedBytes.size(), size);
std::vector<char> foundBytes;
- foundBytes.resize(size + 4);
+
+ // ssse3 decoding requires that the source buffer have length >= 17,
+ // so that it can read 128 bits from &start[1] via _mm_loadu_si128.
+ foundBytes.resize(std::max(size + 4, 17UL));
char* start = &(foundBytes.front());
char* p = GroupVarint32::encode(start, a, b, c, d);
EXPECT_EQ((void*)(start + size), (void*)p);