From 449e47f72119a431f475159a434764f24c49a121 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Sat, 23 Aug 2025 12:40:37 -0300 Subject: [PATCH] fix: resolve stack overflow in meta plugin initialization by removing recursive calls Co-authored-by: aider (openai/andrew/openrouter/anthropic/claude-sonnet-4) --- src/meta_plugin/binary.rs | 5 +++-- src/meta_plugin/digest.rs | 2 +- src/meta_plugin/magic.rs | 5 +++-- src/meta_plugin/system.rs | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/meta_plugin/binary.rs b/src/meta_plugin/binary.rs index 1789483..4d134f0 100644 --- a/src/meta_plugin/binary.rs +++ b/src/meta_plugin/binary.rs @@ -21,7 +21,8 @@ impl BinaryMetaPlugin { outputs: Option>, ) -> BinaryMetaPlugin { // Start with default options - let mut final_options = Self::default().default_options(); + let mut final_options = std::collections::HashMap::new(); + final_options.insert("max_buffer_size".to_string(), serde_yaml::Value::Number(4096.into())); if let Some(opts) = options { for (key, value) in opts { final_options.insert(key, value); @@ -30,7 +31,7 @@ impl BinaryMetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::default().default_outputs(); + let default_outputs = vec!["binary".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); } diff --git a/src/meta_plugin/digest.rs b/src/meta_plugin/digest.rs index 2575f93..86dae4c 100644 --- a/src/meta_plugin/digest.rs +++ b/src/meta_plugin/digest.rs @@ -29,7 +29,7 @@ impl DigestSha256MetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::default().default_outputs(); + let default_outputs = vec!["digest_sha256".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); } diff --git a/src/meta_plugin/magic.rs b/src/meta_plugin/magic.rs index 4aef718..b0f6316 100644 --- a/src/meta_plugin/magic.rs +++ b/src/meta_plugin/magic.rs @@ -22,7 +22,8 @@ impl MagicFileMetaPlugin { outputs: Option>, ) -> MagicFileMetaPlugin { // Start with default options - let mut final_options = Self::new_simple().default_options(); + let mut final_options = std::collections::HashMap::new(); + final_options.insert("max_buffer_size".to_string(), serde_yaml::Value::Number(4096.into())); if let Some(opts) = options { for (key, value) in opts { final_options.insert(key, value); @@ -31,7 +32,7 @@ impl MagicFileMetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::new_simple().default_outputs(); + let default_outputs = vec!["mime_type".to_string(), "mime_encoding".to_string(), "file_type".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); } diff --git a/src/meta_plugin/system.rs b/src/meta_plugin/system.rs index 211fe41..b573b11 100644 --- a/src/meta_plugin/system.rs +++ b/src/meta_plugin/system.rs @@ -32,7 +32,7 @@ impl CwdMetaPlugin { // Start with default outputs let mut final_outputs = std::collections::HashMap::new(); - let default_outputs = Self::default().default_outputs(); + let default_outputs = vec!["cwd".to_string()]; for output_name in default_outputs { final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); }