aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-05-22 23:58:38 -0700
committerPaul Eggert2011-05-22 23:58:38 -0700
commit519e1d69210be09fc3d541ad3c086c1521f23f26 (patch)
treec14f7aa494bc182ff0d311bfbb032a15a048fbb0 /src
parent847044ea2e84857e6379841ed561f5af9ca0e091 (diff)
downloademacs-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/ChangeLog2
-rw-r--r--src/ccl.c8
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 @@
12011-05-23 Paul Eggert <eggert@cs.ucla.edu> 12011-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.
diff --git a/src/ccl.c b/src/ccl.c
index d66a61b713d..98b060522a4 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -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);