Branch: Tag:

2014-12-04

2014-12-04 19:25:08 by Arne Goedeke <el@laramies.com>

type system: prevent signed integer overflow

2104:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(char_type);    max = CDR_TO_INT(char_type); -  if (!min && max && !(max & (max+1))) { +  if (!min && max && max != MAX_INT32 && !(max & (max+1))) {    int j = 0;    while (max) {    max >>= 1;
2139:   #endif /* PIKE_DEBUG */    min = CAR_TO_INT(s);    max = CDR_TO_INT(s); -  if (!min && max && !(max & (max+1))) { +  if (!min && max && max != MAX_INT32 && !(max & (max+1))) {    int j = 0;    while (max) {    max >>= 1;
2310:    INT32 max=CDR_TO_INT(t);    my_strcat("int");    -  if (!min && max && !(max & (max+1))) { +  if (!min && max && max != MAX_INT32 && !(max & (max+1))) {    int j = 0;    while (max) {    max >>= 1;
2388:    } else {    min = CAR_TO_INT(char_type);    max = CDR_TO_INT(char_type); -  if (!min && max && !(max & (max+1))) { +  if (!min && max && max != MAX_INT32 && !(max & (max+1))) {    int j = 0;    while (max) {    max >>= 1;
2419:    } else {    min = CAR_TO_INT(t);    max = CDR_TO_INT(t); -  if (!min && max && !(max & (max+1))) { +  if (!min && max && max != MAX_INT32 && !(max & (max+1))) {    int j = 0;    while (max) {    max >>= 1;