summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--zellij-utils/src/input/config.rs12
-rw-r--r--zellij-utils/src/input/layout.rs12
2 files changed, 22 insertions, 2 deletions
diff --git a/zellij-utils/src/input/config.rs b/zellij-utils/src/input/config.rs
index e55798e75..ecfe64c7c 100644
--- a/zellij-utils/src/input/config.rs
+++ b/zellij-utils/src/input/config.rs
@@ -106,7 +106,17 @@ impl TryFrom<&CliArgs> for Config {
impl Config {
/// Uses defaults, but lets config override them.
pub fn from_yaml(yaml_config: &str) -> ConfigResult {
- let config_from_yaml: Option<ConfigFromYaml> = serde_yaml::from_str(yaml_config)?;
+ let config_from_yaml: Option<ConfigFromYaml> = match serde_yaml::from_str(yaml_config) {
+ Err(e) => {
+ // needs direct check, as `[ErrorImpl]` is private
+ // https://github.com/dtolnay/serde-yaml/issues/121
+ if yaml_config.is_empty() {
+ return Ok(Config::default());
+ }
+ return Err(ConfigError::Serde(e));
+ }
+ Ok(config) => config,
+ };
match config_from_yaml {
None => Ok(Config::default()),
diff --git a/zellij-utils/src/input/layout.rs b/zellij-utils/src/input/layout.rs
index 033614151..2bbc8cb48 100644
--- a/zellij-utils/src/input/layout.rs
+++ b/zellij-utils/src/input/layout.rs
@@ -161,7 +161,17 @@ impl LayoutFromYaml {
let mut layout = String::new();
layout_file.read_to_string(&mut layout)?;
- let layout: Option<LayoutFromYaml> = serde_yaml::from_str(&layout)?;
+ let layout: Option<LayoutFromYaml> = match serde_yaml::from_str(&layout) {
+ Err(e) => {
+ // needs direct check, as `[ErrorImpl]` is private
+ // https://github.com/dtolnay/serde-yaml/issues/121
+ if layout.is_empty() {
+ return Ok(LayoutFromYaml::default());
+ }
+ return Err(ConfigError::Serde(e));
+ }
+ Ok(config) => config,
+ };
match layout {
Some(layout) => {