summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/drivers/can/can.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c
index 8ac3029533..c31523c1a0 100644
--- a/components/drivers/can/can.c
+++ b/components/drivers/can/can.c
@@ -65,7 +65,7 @@ rt_inline int _can_int_rx(struct rt_can_device *can, struct rt_can_msg *data, in
can->hdr[hdr].msgs--;
}
listmsg->owner = RT_NULL;
- } else
+ } else if(hdr == -1)
#endif /*RT_CAN_USING_HDR*/
if (!rt_list_isempty(&rx_fifo->uselist))
{
@@ -97,6 +97,8 @@ rt_inline int _can_int_rx(struct rt_can_device *can, struct rt_can_msg *data, in
RT_ASSERT(rx_fifo->freenumbers <= can->config.msgboxsz);
rt_hw_interrupt_enable(level);
listmsg = RT_NULL;
+ } else {
+ break;
}
data ++; msgs -= sizeof(struct rt_can_msg);
}