Instead of constructing a string in the `tmp` buffer and then eventually
allocating vmalloc space to copy this into, we can simply compute the number of
bytes in advance, allocate vmalloc space, and then directly emit the output into
the vmalloc buffer. Related to #1873, #1998.
tmp.data.constant.value.string = exprintf(ex->ve, "%g", v.floating);
}
else if ((*ex->disc->convertf)(ex, &tmp, STRING, expr->data.operand.right ? expr->data.operand.right->data.variable.symbol : (Exid_t*)0, 0, ex->disc)) {
- sfprintf(ex->tmp, "%g", v.floating);
- tmp.data.constant.value.string = exstash(ex->tmp, ex->ve);
+ tmp.data.constant.value.string = exprintf(ex->ve, "%g", v.floating);
}
tmp.type = STRING;
return tmp.data.constant.value;