diff --git a/bshell.runtime/runtime/scope.c b/bshell.runtime/runtime/scope.c index b3b0dc2..7617ca1 100644 --- a/bshell.runtime/runtime/scope.c +++ b/bshell.runtime/runtime/scope.c @@ -90,10 +90,25 @@ void bshell_runtime_scope_set_block( bshell_scriptblock_unref(scope->s_block); } - scope->s_block = bshell_scriptblock_ref(block); - scope->s_ip = 0; - bshell_scriptblock_get_text(block, &scope->s_instr, &scope->s_nr_instr); - bshell_scriptblock_get_pool(block, &scope->s_pool, &scope->s_nr_pool); + if (!block) { + scope->s_block = NULL; + scope->s_ip = 0; + scope->s_instr = NULL; + scope->s_nr_instr = 0; + scope->s_pool = NULL; + scope->s_nr_pool = 0; + } else { + scope->s_block = bshell_scriptblock_ref(block); + scope->s_ip = 0; + bshell_scriptblock_get_text( + block, + &scope->s_instr, + &scope->s_nr_instr); + bshell_scriptblock_get_pool( + block, + &scope->s_pool, + &scope->s_nr_pool); + } } fx_hashtable *bshell_runtime_scope_get_functions(