From 06834c1d144a13aee14088aa688635ef65f2604d Mon Sep 17 00:00:00 2001 From: temi54c1l8 Date: Fri, 14 Jun 2024 09:02:17 +0200 Subject: [PATCH] O_SDOserver: static analysis: side effects on right hand of logical operator, '&&' [MISRA 2012 Rule 13.5, required] because SDO->state is volatile --- 301/CO_SDOserver.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/301/CO_SDOserver.c b/301/CO_SDOserver.c index e784b5a..073d389 100644 --- a/301/CO_SDOserver.c +++ b/301/CO_SDOserver.c @@ -704,7 +704,7 @@ CO_SDO_return_t CO_SDOserver_process(CO_SDOserver_t *SDO, bool_t isNew = CO_FLAG_READ(SDO->CANrxNew); - if (SDO->valid && (SDO->state == CO_SDO_ST_IDLE) && !isNew) { + if ((SDO->state == CO_SDO_ST_IDLE) && SDO->valid && !isNew) { /* Idle and nothing new */ ret = CO_SDO_RT_ok_communicationEnd; } @@ -809,7 +809,9 @@ CO_SDO_return_t CO_SDOserver_process(CO_SDOserver_t *SDO, #endif /* (CO_CONFIG_SDO_SRV) & CO_CONFIG_SDO_SRV_SEGMENTED */ } /* (SDO->state == CO_SDO_ST_IDLE) */ - if ((SDO->state != CO_SDO_ST_IDLE) && (SDO->state != CO_SDO_ST_ABORT)) { + bool isOKstate = (SDO->state != CO_SDO_ST_IDLE); + isOKstate = (SDO->state != CO_SDO_ST_ABORT) && isOKstate; + if (isOKstate) { switch (SDO->state) { case CO_SDO_ST_DOWNLOAD_INITIATE_REQ: { if ((SDO->CANrxData[0] & 0x02U) != 0U) {