Skip to content

Commit 6d8517a

Browse files
authored
Merge pull request #186 from jsturtevant/remove-possible-panics
[windows] Unwrap error as windows error or otherwise return error message
2 parents 891a155 + 57b2713 commit 6d8517a

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/sync/sys/windows/net.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl PipeConnection {
236236
let res = unsafe {GetOverlappedResult(self.named_pipe, ol.as_mut_ptr(), &mut bytes_transfered, WAIT_FOR_EVENT) };
237237
match res {
238238
0 => {
239-
return Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap()))
239+
return Err(handle_windows_error(io::Error::last_os_error()))
240240
}
241241
_ => {
242242
return Ok(bytes_transfered as usize)
@@ -267,7 +267,7 @@ impl PipeConnection {
267267
let res = unsafe {GetOverlappedResult(self.named_pipe, ol.as_mut_ptr(), &mut bytes_transfered, WAIT_FOR_EVENT) };
268268
match res {
269269
0 => {
270-
return Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap()))
270+
return Err(handle_windows_error(io::Error::last_os_error()))
271271
}
272272
_ => {
273273
return Ok(bytes_transfered as usize)
@@ -289,7 +289,7 @@ impl PipeConnection {
289289
pub fn shutdown(&self) -> Result<()> {
290290
let result = unsafe { DisconnectNamedPipe(self.named_pipe) };
291291
match result {
292-
0 => Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap())),
292+
0 => Err(handle_windows_error(io::Error::last_os_error())),
293293
_ => Ok(()),
294294
}
295295
}
@@ -302,23 +302,23 @@ pub struct ClientConnection {
302302
fn close_handle(handle: isize) -> Result<()> {
303303
let result = unsafe { CloseHandle(handle) };
304304
match result {
305-
0 => Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap())),
305+
0 => Err(handle_windows_error(io::Error::last_os_error())),
306306
_ => Ok(()),
307307
}
308308
}
309309

310310
fn create_event() -> Result<isize> {
311311
let result = unsafe { CreateEventW(std::ptr::null_mut(), 0, 1, std::ptr::null_mut()) };
312312
match result {
313-
0 => Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap())),
313+
0 => Err(handle_windows_error(io::Error::last_os_error())),
314314
_ => Ok(result),
315315
}
316316
}
317317

318318
fn set_event(event: isize) -> Result<()> {
319319
let result = unsafe { SetEvent(event) };
320320
match result {
321-
0 => Err(Error::Windows(io::Error::last_os_error().raw_os_error().unwrap())),
321+
0 => Err(handle_windows_error(io::Error::last_os_error())),
322322
_ => Ok(()),
323323
}
324324
}
@@ -349,7 +349,7 @@ impl ClientConnection {
349349
return PipeConnection::new(file.into_raw_handle() as isize)
350350
}
351351
Err(e) => {
352-
return Err(Error::Windows(e.raw_os_error().unwrap()))
352+
return Err(handle_windows_error(e))
353353
}
354354
}
355355
}
@@ -365,6 +365,14 @@ impl ClientConnection {
365365
}
366366
}
367367

368+
fn handle_windows_error(e: io::Error) -> Error {
369+
if let Some(raw_os_err) = e.raw_os_error() {
370+
Error::Windows(raw_os_err)
371+
} else {
372+
Error::Others(e.to_string())
373+
}
374+
}
375+
368376
#[cfg(test)]
369377
mod test {
370378
use super::*;

0 commit comments

Comments
 (0)