ludic.settings: the store filled into a kept object in place; texts read from a file kept apart from it
settings_fill_json(v) writes every saved setting into an object the caller keeps, making a Value only for a key seen the first time (value_set_str / value_set_int): Maroon Lake's Settings pages rebuilt the whole tree on every change and dropped the old one. A text read from a file is interned, and so is a muted card's key ludic.hints does not know, so the parsed tree can be let go whole. Test: the store filled into a kept object changes its Values in place (6 tests pass). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1667d7f16e
commit
9c24d707bc
3 changed files with 33 additions and 2 deletions
|
|
@ -43,7 +43,7 @@ export function hints_mutes_load(hints_st: mut HintsState, l: Val) -> void {
|
|||
if Value.kind(e) != 4 { continue }
|
||||
let k = Value.as_str(e)
|
||||
let id = hints_find(k)
|
||||
if id >= 0 { hints_st.hn_mute[id] = true } else { push(hints_st.hn_foreign, k) }
|
||||
if id >= 0 { hints_st.hn_mute[id] = true } else { push(hints_st.hn_foreign, intern(k)) } # the tree is let go
|
||||
}
|
||||
}
|
||||
function hn_mutes() -> []bool {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue