No public description PiperOrigin-RevId: 929225643
diff --git a/centipede/engine_worker.cc b/centipede/engine_worker.cc index 5cfd866..c647eda 100644 --- a/centipede/engine_worker.cc +++ b/centipede/engine_worker.cc
@@ -602,27 +602,26 @@ // In-loop variables declared outside to save allocations. std::vector<uint64_t> features; std::vector<uint8_t> serialized_metadata; + std::vector<FuzzTestInputHandle> emitted_inputs; + const auto input_sink = GetInputSinkTo(emitted_inputs); for (size_t i = 0; i < num_inputs; i++) { auto blob = inputs_blobseq->Read(); if (!blob.IsValid()) return; // no more blobs to read. WorkerCheck(IsDataInput(blob), "Must read data input"); - FuzzTestInputHandle input; - FuzzTestInputSink sink = { - /*ctx=*/reinterpret_cast<FuzzTestInputSinkCtx*>(&input), - /*Emit=*/[](FuzzTestInputSinkCtx* ctx, FuzzTestInputHandle input) { - *reinterpret_cast<decltype(&input)>(ctx) = input; - }}; - if (!BatchResult::WriteInputBegin(*outputs_blobseq)) { WorkerLog("failed to write input begin"); break; } + emitted_inputs.clear(); const auto input_content = FuzzTestBytesView{blob.data, blob.size}; - adapter.DeserializeInputContent(adapter.ctx, &input_content, &sink); + adapter.DeserializeInputContent(adapter.ctx, &input_content, &input_sink); WORKER_CHECK_FOR_ERROR(); + WorkerCheck(emitted_inputs.size() == 1, + "Deserialize must emit exactly one input"); + auto input = emitted_inputs[0]; features.clear(); FuzzTestFeedbackSink feedback_sink = {