diff --git a/cpp/src/arrow/compute/kernels/codegen_internal.h b/cpp/src/arrow/compute/kernels/codegen_internal.h index 11e03bba2873a..90c4b32415aed 100644 --- a/cpp/src/arrow/compute/kernels/codegen_internal.h +++ b/cpp/src/arrow/compute/kernels/codegen_internal.h @@ -663,13 +663,14 @@ struct ScalarUnaryNotNullStateful { static void Exec(const ThisType& functor, KernelContext* ctx, const ArrayData& arg0, Datum* out) { ArrayData* out_arr = out->mutable_array(); - auto out_data = out_arr->GetMutableValues(1); + auto out_data = out_arr->GetMutableValues(1, 0) + 16 * out_arr->offset; VisitArrayValuesInline( arg0, [&](Arg0Value v) { - *out_data++ = functor.op.template Call(ctx, v); + functor.op.template Call(ctx, v).ToBytes(out_data); + out_data += 16; }, - [&]() { ++out_data; }); + [&]() { out_data += 16; }); } };