From 259b3abbb0984a4d6db7339d067f094e9b7a0223 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Sun, 05 Apr 2026 19:25:11 +0000 Subject: [PATCH] fix: ensure stack for deep manifest recursion --- --- a/crates/jrsonnet-evaluator/src/manifest.rs +++ b/crates/jrsonnet-evaluator/src/manifest.rs @@ -1,6 +1,9 @@ use std::{borrow::Cow, fmt::Write, hint::black_box, ptr}; -use crate::{Result, ResultExt, Val, bail, in_description_frame}; +use crate::{ + bail, evaluate::ensure_sufficient_stack, in_description_frame, Error, + Result, ResultExt, Val, +}; pub trait ManifestFormat { fn manifest_buf(&self, val: Val, buf: &mut String) -> Result<()>; @@ -252,7 +255,7 @@ write!(buf, "{:?}", n.to_string()).unwrap(); } } - Val::Arr(items) => { + Val::Arr(items) => ensure_sufficient_stack(|| { buf.push('['); let old_len = cur_padding.len(); @@ -304,8 +307,9 @@ } buf.push(']'); - } - Val::Obj(obj) => { + Ok::<_, Error>(()) + })?, + Val::Obj(obj) => ensure_sufficient_stack(|| { obj.run_assertions()?; buf.push('{'); @@ -366,7 +370,8 @@ } buf.push('}'); - } + Ok::<_, Error>(()) + })?, Val::Func(_) => bail!("tried to manifest function"), } Ok(()) -- gitstuff