blob: 00d37dcb4bd0400ce27461d5e241970e8d7a4140 [file] [log] [blame]
#include <string>
#include <unordered_map>
#include <unordered_set>
int g_the_foo = 0;
int thefoo_rw(int arg = 1) {
if (arg < 0)
arg = 0;
if (!arg)
arg = 1;
g_the_foo += arg;
return g_the_foo;
}
int main() {
char buffer[sizeof(std::unordered_map<int, std::string>)] = {0};
std::unordered_map<int, std::string> &corrupt_map = *(std::unordered_map<int, std::string> *)buffer;
std::unordered_map<int, std::string> map; // Set break point at this line.
map.emplace(1, "hello");
map.emplace(2, "world");
map.emplace(3, "this");
map.emplace(4, "is");
map.emplace(5, "me");
thefoo_rw(); // Set break point at this line.
std::unordered_multimap<int, std::string> mmap;
mmap.emplace(1, "hello");
mmap.emplace(2, "hello");
mmap.emplace(2, "world");
mmap.emplace(3, "this");
mmap.emplace(3, "this");
mmap.emplace(3, "this");
thefoo_rw(); // Set break point at this line.
std::unordered_set<int> iset;
iset.emplace(1);
iset.emplace(2);
iset.emplace(3);
iset.emplace(4);
iset.emplace(5);
thefoo_rw(); // Set break point at this line.
std::unordered_set<std::string> sset;
sset.emplace("hello");
sset.emplace("world");
sset.emplace("this");
sset.emplace("is");
sset.emplace("me");
thefoo_rw(); // Set break point at this line.
std::unordered_multiset<int> imset;
imset.emplace(1);
imset.emplace(2);
imset.emplace(2);
imset.emplace(3);
imset.emplace(3);
imset.emplace(3);
thefoo_rw(); // Set break point at this line.
std::unordered_multiset<std::string> smset;
smset.emplace("hello");
smset.emplace("world");
smset.emplace("world");
smset.emplace("is");
smset.emplace("is");
thefoo_rw(); // Set break point at this line.
return 0;
}