diff options
Diffstat (limited to 'src/util.rs')
-rw-r--r-- | src/util.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/util.rs b/src/util.rs index 54062a5..567c478 100644 --- a/src/util.rs +++ b/src/util.rs @@ -83,10 +83,13 @@ pub fn result_from_string(ptr: *const c_char) -> Result<String, CommandError> { unsafe { let s = owned_str_from_ptr(ptr); free(ptr as *mut c_void); + // An empty string can both indicate an error or be a valid return value. In this case, we + // have to check the last command status to decide what to return. if s.is_empty() { - return Err(get_last_error()); + get_last_result().map(|_| s) + } else { + Ok(s) } - return Ok(s); } } |