vi drivers/isdn/hardware/eicon/message.c +4035
and note two similar tests on line 4035 and 4049:
[else] if (plci->msg_in_read_pos == plci->msg_in_wrap_pos)
after the first test:
plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
plci->msg_in_read_pos = i + MSG_IN_OVERHEAD;
but then after the second test as well:
plci->msg_in_read_pos = MSG_IN_QUEUE_SIZE;
plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
So the assignment after the first test has no effect. Is this a bug?
Roel Kluin
On Fri, 25 Jul 2008, roel kluin wrote:
> vi drivers/isdn/hardware/eicon/message.c +4035
>
> and note two similar tests on line 4035 and 4049:
>
> [else] if (plci->msg_in_read_pos == plci->msg_in_wrap_pos)
>
> after the first test:
>
> plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
> plci->msg_in_read_pos = i + MSG_IN_OVERHEAD;
>
> but then after the second test as well:
>
> plci->msg_in_read_pos = MSG_IN_QUEUE_SIZE;
> plci->msg_in_wrap_pos = MSG_IN_QUEUE_SIZE;
>
>
> So the assignment after the first test has no effect. Is this a bug?
If (plci->msg_in_read_pos == plci->msg_in_wrap_pos) is true in the first
test it can't be true in the second.
So the code could be optimized a bit. But the first assignments are needed.
If it's false in the first it may become true in the second. So it's not a
bug. All conditions are really needed.
Armin