(xunsymbol): Ensure the table is a symbol table before searching it.

This commit is contained in:
Ron Koenderink 2006-01-21 17:33:02 +00:00
parent a6587e7e46
commit 036a623a40

View file

@ -258,8 +258,12 @@ xunsymbol(struct castr *ca, struct value *vp, int n)
int value; int value;
char *token; char *token;
if (ca->ca_table == EF_BAD || ef_cadef(ca->ca_table) != symbol_ca)
return gripe("%s doesn't take a symbol or symbol set in field %d",
ca->ca_name, n);
if (vp->v_type == VAL_SYMBOL_SET) { if (vp->v_type == VAL_SYMBOL_SET) {
if (!(ca->ca_flags & NSC_BITS) || ca->ca_table == EF_BAD) if (!(ca->ca_flags & NSC_BITS))
return gripe("%s doesn't take a symbol set in field %d", return gripe("%s doesn't take a symbol set in field %d",
ca->ca_name, n); ca->ca_name, n);
value = 0; value = 0;
@ -270,7 +274,7 @@ xunsymbol(struct castr *ca, struct value *vp, int n)
value |= symtab[i].value; value |= symtab[i].value;
} }
} else if (vp->v_type == VAL_SYMBOL) { } else if (vp->v_type == VAL_SYMBOL) {
if ((ca->ca_flags & NSC_BITS) || ca->ca_table == EF_BAD) if (ca->ca_flags & NSC_BITS)
return gripe("%s doesn't take a symbol in field %d", return gripe("%s doesn't take a symbol in field %d",
ca->ca_name, n); ca->ca_name, n);
i = xunsymbol1(buf, symtab, ca, n); i = xunsymbol1(buf, symtab, ca, n);