diff --git a/cmd/soroban-cli/src/commands/tx/xdr.rs b/cmd/soroban-cli/src/commands/tx/xdr.rs index f9d0ef0c6..6a88c4234 100644 --- a/cmd/soroban-cli/src/commands/tx/xdr.rs +++ b/cmd/soroban-cli/src/commands/tx/xdr.rs @@ -54,20 +54,26 @@ impl SkipWhitespace { impl Read for SkipWhitespace { fn read(&mut self, buf: &mut [u8]) -> std::io::Result { - let n = self.inner.read(buf)?; + loop { + let n = self.inner.read(buf)?; + if n == 0 { + return Ok(0); + } - let mut written = 0; - for read in 0..n { - if !buf[read].is_ascii_whitespace() { - buf[written] = buf[read]; - written += 1; + let mut written = 0; + for read in 0..n { + if !buf[read].is_ascii_whitespace() { + buf[written] = buf[read]; + written += 1; + } } - } - Ok(written) + if written > 0 { + return Ok(written); + } + } } } -// pub fn unwrap_envelope_v1(tx_env: TransactionEnvelope) -> Result { let TransactionEnvelope::Tx(TransactionV1Envelope { tx, .. }) = tx_env else { @@ -83,3 +89,54 @@ pub fn add_op(tx_env: TransactionEnvelope, op: Operation) -> Result