void do_rule(int rule, int x, std::vector<int>& out, int maxout,
const WeightVector& weight,
uint64_t choose_args_index) const {
- int rawout[maxout];
- char work[crush_work_size(crush, maxout)];
- crush_init_workspace(crush, work);
+ std::vector<int> rawout(maxout);
+ std::vector<char> work(crush_work_size(crush, maxout));
+ crush_init_workspace(crush, std::data(work));
crush_choose_arg_map arg_map = choose_args_get_with_fallback(
choose_args_index);
- int numrep = crush_do_rule(crush, rule, x, rawout, maxout,
+ int numrep = crush_do_rule(crush, rule, x, std::data(rawout), maxout,
std::data(weight), std::size(weight),
- work, arg_map.args);
+ std::data(work), arg_map.args);
if (numrep < 0)
numrep = 0;
out.resize(numrep);