[llvm-branch-commits] [YAML] Don't validate `Fill::Size` after error (PR #123280)
Vitaly Buka via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 17 18:02:41 PST 2025
================
@@ -1750,7 +1750,9 @@ void MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::mapping(
std::string MappingTraits<std::unique_ptr<ELFYAML::Chunk>>::validate(
IO &io, std::unique_ptr<ELFYAML::Chunk> &C) {
if (const auto *F = dyn_cast<ELFYAML::Fill>(C.get())) {
- if (F->Pattern && F->Pattern->binary_size() != 0 && !F->Size)
+ // Can't check the `Size`, as it's required and may be left uninitialized by
----------------
vitalybuka wrote:
However, I can't reproduce with MachOYAML::Section!
Because it IO.mapRequired("Size" before optional, so if size is missing, Section.content will not be set, and nothing to match.
so the following is a fix (bad) as well :)
```
static void fillMapping(IO &IO, ELFYAML::Fill &Fill) {
+ IO.mapRequired("Size", Fill.Size);
IO.mapOptional("Name", Fill.Name, StringRef());
IO.mapOptional("Pattern", Fill.Pattern);
IO.mapOptional("Offset", Fill.Offset);
- IO.mapRequired("Size", Fill.Size);
}
```
https://github.com/llvm/llvm-project/pull/123280
More information about the llvm-branch-commits
mailing list