Open mkeeter opened 1 year ago
When writing a function that returns a Complex error, the error data is returned by serializing it and copying it into the caller's memory.
Complex
Right now, we check that caller has provided a large enough buffer here, faulting the caller if they failed us.
However, the generated code for max_reply_size doesn't take Complex errors into account; it only checks the Ok return value.
max_reply_size
Ok
Given this definition:
"fancy_error": ( reply: Result( ok: "()", err: Complex("FancyNetError"), ), encoding: Hubpack, ),
The generated REPLY_SIZE is simply
REPLY_SIZE
pub const FANCY_ERROR_REPLY_SIZE: usize =<() as hubpack::SerializedSize>::MAX_SIZE;
(and this constant is used in the generated max_reply_size).
When writing a function that returns a
Complex
error, the error data is returned by serializing it and copying it into the caller's memory.Right now, we check that caller has provided a large enough buffer here, faulting the caller if they failed us.
However, the generated code for
max_reply_size
doesn't takeComplex
errors into account; it only checks theOk
return value.Given this definition:
The generated
REPLY_SIZE
is simply(and this constant is used in the generated
max_reply_size
).