if (op1->type == IS_LONG && op2->type == IS_LONG) {
double dval = (double) op1->value.lval + (double) op2->value.lval;
- if (dval > (double) LONG_MAX) {
+ if ((dval > (double) LONG_MAX) || (dval < (double) LONG_MIN)) {
result->value.dval = dval;
result->type = IS_DOUBLE;
} else {
if (op1->type == IS_LONG && op2->type == IS_LONG) {
double dval = (double) op1->value.lval - (double) op2->value.lval;
- if (dval < (double) LONG_MIN) {
+ if ((dval < (double) LONG_MIN) || (dval > (double) LONG_MAX)) {
result->value.dval = dval;
result->type = IS_DOUBLE;
} else {
if (op1->type == IS_LONG && op2->type == IS_LONG) {
double dval = (double) op1->value.lval * (double) op2->value.lval;
- if (dval > (double) LONG_MAX) {
+ if ((dval > (double) LONG_MAX) || (dval < (double) LONG_MIN)) {
result->value.dval = dval;
result->type = IS_DOUBLE;
} else {