From f7932e17fd4009c765b395106050479fab04a1fa Mon Sep 17 00:00:00 2001 From: ori raisfeld Date: Sat, 28 Dec 2024 09:59:37 +0200 Subject: [PATCH 1/2] reading an invalid f64 now returns 0.0 --- src/dxb_reader.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dxb_reader.rs b/src/dxb_reader.rs index aad363b..e0138b3 100644 --- a/src/dxb_reader.rs +++ b/src/dxb_reader.rs @@ -296,9 +296,13 @@ impl DxbReader { Ok(value) } fn read_f(&mut self) -> DxfResult { - let value = read_f64(&mut self.reader)?; + let value = read_f64(&mut self.reader); + if value.is_err() { + self.advance_offset(8); + return Ok(0.0); + } self.advance_offset(8); - Ok(value) + Ok(value.unwrap()) } fn read_n(&mut self) -> DxfResult { if self.is_integer_mode { From f619a86c0935a0801ce65b0708fd40f317485dda Mon Sep 17 00:00:00 2001 From: ori raisfeld Date: Sat, 28 Dec 2024 21:23:28 +0200 Subject: [PATCH 2/2] fixed code according to previous pull request's suggestions --- src/dxb_reader.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/dxb_reader.rs b/src/dxb_reader.rs index e0138b3..8acfd35 100644 --- a/src/dxb_reader.rs +++ b/src/dxb_reader.rs @@ -297,12 +297,8 @@ impl DxbReader { } fn read_f(&mut self) -> DxfResult { let value = read_f64(&mut self.reader); - if value.is_err() { - self.advance_offset(8); - return Ok(0.0); - } self.advance_offset(8); - Ok(value.unwrap()) + Ok(value.or::(Ok(0.0)).unwrap()) } fn read_n(&mut self) -> DxfResult { if self.is_integer_mode {