##// END OF EJS Templates
dirstate: Remove the Rust abstraction DirstateMapMethods...
dirstate: Remove the Rust abstraction DirstateMapMethods This Rust trait used to exist in order to allow the DirstateMap class exposed to Python to be backed by either of two implementations: one similar to the Python implementation based on a "flat" `HashMap<HgPathBuf, DirstateEntry>`, and the newer one based on a tree of nodes matching the directory structure of tracked files. A boxed trait object was used with dynamic dispatch. With the flat implementation removed and only the tree one remaining, this abstraction is not useful anymore and the concrete type can be stored directly. It remains that the trait was implemented separately for `DirstateMap<'_>` (which takes a lifetime parameter) and `OwningDirstateMap` (whose job is to wrap the former and hide the lifetime parameter), with the latter impl only forwarding calls. This changeset also removes this forwarding. Instead, the methods formerly of the `DirstateMapMethods` trait are now inherent methods implemented for `OwningDirstateMap` (where they will actually be used) but in the module that defines `DirstateMap`. This unusual setup gives access to the private fields of `DirstateMap` from those methods. Differential Revision: https://phab.mercurial-scm.org/D11517

File last commit:

r44255:7857bd9b default
r48883:3d0a9c6e default
Show More
bdiff.cc
39 lines | 969 B | text/x-c | CppLexer
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 /*
* bdiff.cc - fuzzer harness for bdiff.c
*
* Copyright 2018, Google Inc.
*
* This software may be used and distributed according to the terms of
* the GNU General Public License, incorporated herein by reference.
*/
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191 #include <memory>
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 #include <stdlib.h>
Augie Fackler
fuzz: use a more standard approach to allow local builds of fuzzers...
r44265 #include "FuzzedDataProvider.h"
Augie Fackler
fuzz: extract some common utilities and use modern C++ idioms...
r38191
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 extern "C" {
#include "bdiff.h"
Augie Fackler
fuzz: always define LLVMFuzzerInitialize() even if we don't need it...
r44261 extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv)
{
return 0;
}
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
{
Augie Fackler
fuzz: migrate bdiff fuzzer to use FuzzedDataProvider...
r44011 FuzzedDataProvider provider(Data, Size);
std::string left = provider.ConsumeRandomLengthString(Size);
std::string right = provider.ConsumeRemainingBytesAsString();
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688
struct bdiff_line *a, *b;
Augie Fackler
fuzz: migrate bdiff fuzzer to use FuzzedDataProvider...
r44011 int an = bdiff_splitlines(left.c_str(), left.size(), &a);
int bn = bdiff_splitlines(right.c_str(), right.size(), &b);
Augie Fackler
contrib: add some basic scaffolding for some fuzz test targets...
r35688 struct bdiff_hunk l;
bdiff_diff(a, an, b, bn, &l);
free(a);
free(b);
bdiff_freehunks(l.next);
return 0; // Non-zero return values are reserved for future use.
}
} // extern "C"