Changed the type of the variable `qidx' from u_int8_t to int,

mainly to quiet a warning emitted by GCC 3.3 about comparing
a variable to a value which is larger than the former can hold.

The value was checked to make sure the `np->squeue' array is
not accessed behind its boundary.
This worked due to possibly accidental truncation when
(np->squeueput + 1) was larger than or equal to MAX_START (256)
when it was assigned to `qidx'.

`qidx' is used to hold the next position in the start queue
for an insertion.  The new type was chosen because some other
code in the function ncr_freeze_devq() also uses plain integers
to hold those indices.

Wrapped the line after the closing parenthesis of an `if'
condition.
This commit is contained in:
robert 2003-07-27 00:13:49 +00:00
parent 77fa6d308c
commit 0794d13291

View File

@ -3880,7 +3880,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
int segments;
u_int8_t nego;
u_int8_t idmsg;
u_int8_t qidx;
int qidx;
tp = &np->target[ccb->ccb_h.target_id];
csio = &ccb->csio;
@ -4154,7 +4154,8 @@ ncr_action (struct cam_sim *sim, union ccb *ccb)
*/
qidx = np->squeueput + 1;
if (qidx >= MAX_START) qidx=0;
if (qidx >= MAX_START)
qidx = 0;
np->squeue [qidx ] = NCB_SCRIPT_PHYS (np, idle);
np->squeue [np->squeueput] = CCB_PHYS (cp, phys);
np->squeueput = qidx;