mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-07 10:01:14 -03:00
refactor: improve widestring conversion utils
- Don't use `WString::from_str` for `str`s which are available at compile-time. Use `L!(input).to_owned()` instead. The reason for this is that `WString::from_str` can cause problems if the input contains PUA bytes which we use for our custom encoding scheme. In such cases, `bytes2wcstring` should be used, to avoid problems when decoding the `WString`. Removing harmless usages of `WString::from_str` allows us to focus on the potentially dangerous ones which don't convert `str`'s that are compiled into the binary. - Make `cstr2wcstring` actually take `CStr` as its input. The former version was only used in one place, and the conversion to `CStr` should happen there, where it can be checked that the conversion makes sense and is safe. The new version is used in `src/env/environmant.rs`, to avoid `to_bytes()` calls cluttering the code there. - Add `osstr2wcstring` function. This function also works for `Path`. Now, these types can be converted to widestrings with much less syntactic clutter.
This commit is contained in:
committed by
Johannes Altmanninger
parent
6a2f531f9b
commit
a93c24b084
@@ -1,5 +1,5 @@
|
||||
use crate::builtins::shared::{STATUS_CMD_ERROR, STATUS_CMD_OK, STATUS_READ_TOO_MUCH};
|
||||
use crate::common::{bytes2wcstring, wcs2bytes};
|
||||
use crate::common::{bytes2wcstring, str2wcstring, wcs2bytes};
|
||||
use crate::fd_monitor::{Callback, FdMonitor, FdMonitorItemId};
|
||||
use crate::fds::{
|
||||
BorrowedFdFile, PIPE_ERROR, make_autoclose_pipes, make_fd_nonblocking, wopen_cloexec,
|
||||
@@ -725,7 +725,7 @@ pub fn append_char(&mut self, c: char) -> bool {
|
||||
}
|
||||
|
||||
pub fn append_narrow(&mut self, s: &str) -> bool {
|
||||
self.append(&bytes2wcstring(s.as_bytes()))
|
||||
self.append(&str2wcstring(s))
|
||||
}
|
||||
// Append data from a narrow buffer, widening it.
|
||||
pub fn append_narrow_buffer(&mut self, buffer: &SeparatedBuffer) -> bool {
|
||||
|
||||
Reference in New Issue
Block a user