case '*': /* 3.3.3.2 */
/* no FIELD type allowed */
if ((*expp)->ex_type->tp_fund != POINTER) {
+ if ((*expp)->ex_type != error_type) {
expr_error(*expp,
"* applied to non-pointer (%s)",
symbol2str((*expp)->ex_type->tp_fund));
+ }
} else {
expr = *expp;
case NOTEQUAL: cmpval = (cmpval != 0); break;
}
break;
- case '%':
- case LEFT:
- case RIGHT:
- case '&':
- case '|':
- case '^':
- /*
- expr_error(*expp, "floating operand for %s", symbol2str(oper));
- break;
- */
default:
- crash("(fltcstoper) bad operator %s", symbol2str(oper));
- /*NOTREACHED*/
+ /* in case of situations like a += 3.0; where a undefined */
+ flt_status = 0;
+ break;
}
switch (flt_status) {
case 0:
- case FLT_UNFL:
+ case FLT_UNFL: /* ignore underflow */
break;
case FLT_OVFL:
if (!ResultKnown)