If the parsed finds nothing, it will return a pointer
to a NULL. We need to be careful not to deref this
in printing, analysis, or execution.
Signed-off-by: NeilBrown <neil@brown.name>
static void print_exec(struct exec *e, int indent, int bracket)
{
static void print_exec(struct exec *e, int indent, int bracket)
{
switch (e->type) {
case Xbinode:
print_binode(cast(binode, e), indent, bracket); break;
switch (e->type) {
case Xbinode:
print_binode(cast(binode, e), indent, bracket); break;
struct binode *b = cast(binode, prog);
int ok = 1;
struct binode *b = cast(binode, prog);
int ok = 1;
do {
ok = 1;
propagate_types(b->right, c, &ok, Vnone, 0);
do {
ok = 1;
propagate_types(b->right, c, &ok, Vnone, 0);
static void interp_prog(struct exec *prog, char **argv)
{
struct binode *p = cast(binode, prog);
static void interp_prog(struct exec *prog, char **argv)
{
struct binode *p = cast(binode, prog);
- struct binode *al = cast(binode, p->left);
+ if (!prog)
+ return;
+ al = cast(binode, p->left);
while (al) {
struct var *v = cast(var, al->left);
struct value *vl = &v->var->val;
while (al) {
struct var *v = cast(var, al->left);
struct value *vl = &v->var->val;