diff options
| author | Paul Eggert | 2011-05-22 23:58:38 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-05-22 23:58:38 -0700 |
| commit | 519e1d69210be09fc3d541ad3c086c1521f23f26 (patch) | |
| tree | c14f7aa494bc182ff0d311bfbb032a15a048fbb0 /src | |
| parent | 847044ea2e84857e6379841ed561f5af9ca0e091 (diff) | |
| download | emacs-519e1d69210be09fc3d541ad3c086c1521f23f26.tar.gz emacs-519e1d69210be09fc3d541ad3c086c1521f23f26.zip | |
* ccl.c (ccl_driver): Redo slightly to avoid the need for 'unsigned'.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 2 | ||||
| -rw-r--r-- | src/ccl.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index f49250b6a35..9f9cf401e96 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | 2011-05-23 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-05-23 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * ccl.c (ccl_driver): Redo slightly to avoid the need for 'unsigned'. | ||
| 4 | |||
| 3 | ccl: add integer overflow checks | 5 | ccl: add integer overflow checks |
| 4 | * ccl.c (CCL_CODE_MAX, GET_CCL_RANGE, GET_CCL_CODE, GET_CCL_INT): | 6 | * ccl.c (CCL_CODE_MAX, GET_CCL_RANGE, GET_CCL_CODE, GET_CCL_INT): |
| 5 | (IN_INT_RANGE): New macros. | 7 | (IN_INT_RANGE): New macros. |
| @@ -946,7 +946,7 @@ ccl_driver (struct ccl_program *ccl, int *source, int *destination, int src_size | |||
| 946 | case CCL_SetArray: /* CCCCCCCCCCCCCCCCCCCCRRRrrrXXXXX */ | 946 | case CCL_SetArray: /* CCCCCCCCCCCCCCCCCCCCRRRrrrXXXXX */ |
| 947 | i = reg[RRR]; | 947 | i = reg[RRR]; |
| 948 | j = field1 >> 3; | 948 | j = field1 >> 3; |
| 949 | if ((unsigned int) i < j) | 949 | if (0 <= i && i < j) |
| 950 | GET_CCL_INT (reg[rrr], ccl_prog, ic + i); | 950 | GET_CCL_INT (reg[rrr], ccl_prog, ic + i); |
| 951 | ic += j; | 951 | ic += j; |
| 952 | break; | 952 | break; |
| @@ -997,7 +997,7 @@ ccl_driver (struct ccl_program *ccl, int *source, int *destination, int src_size | |||
| 997 | case CCL_WriteArrayReadJump: /* A--D--D--R--E--S--S-rrrXXXXX */ | 997 | case CCL_WriteArrayReadJump: /* A--D--D--R--E--S--S-rrrXXXXX */ |
| 998 | i = reg[rrr]; | 998 | i = reg[rrr]; |
| 999 | GET_CCL_INT (j, ccl_prog, ic); | 999 | GET_CCL_INT (j, ccl_prog, ic); |
| 1000 | if ((unsigned int) i < j) | 1000 | if (0 <= i && i < j) |
| 1001 | { | 1001 | { |
| 1002 | GET_CCL_INT (i, ccl_prog, ic + 1 + i); | 1002 | GET_CCL_INT (i, ccl_prog, ic + 1 + i); |
| 1003 | CCL_WRITE_CHAR (i); | 1003 | CCL_WRITE_CHAR (i); |
| @@ -1019,7 +1019,7 @@ ccl_driver (struct ccl_program *ccl, int *source, int *destination, int src_size | |||
| 1019 | { | 1019 | { |
| 1020 | int incr; | 1020 | int incr; |
| 1021 | GET_CCL_INT (incr, ccl_prog, | 1021 | GET_CCL_INT (incr, ccl_prog, |
| 1022 | ic + ((unsigned int) reg[rrr] < field1 | 1022 | ic + (0 <= reg[rrr] && reg[rrr] < field1 |
| 1023 | ? reg[rrr] | 1023 | ? reg[rrr] |
| 1024 | : field1)); | 1024 | : field1)); |
| 1025 | ic += incr; | 1025 | ic += incr; |
| @@ -1114,7 +1114,7 @@ ccl_driver (struct ccl_program *ccl, int *source, int *destination, int src_size | |||
| 1114 | 1114 | ||
| 1115 | case CCL_WriteArray: /* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */ | 1115 | case CCL_WriteArray: /* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */ |
| 1116 | i = reg[rrr]; | 1116 | i = reg[rrr]; |
| 1117 | if ((unsigned int) i < field1) | 1117 | if (0 <= i && i < field1) |
| 1118 | { | 1118 | { |
| 1119 | GET_CCL_INT (j, ccl_prog, ic + i); | 1119 | GET_CCL_INT (j, ccl_prog, ic + i); |
| 1120 | CCL_WRITE_CHAR (j); | 1120 | CCL_WRITE_CHAR (j); |