MISRA Discussion Forums

Full Version: Rule M10.1.1
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello,

I've a problem when using the memset function, the error M10.1.1 is raised.
Error raised by the MISRA Tool used (RTRT):
line 12 row 30: Rule M10.1.1
Error: Implicit conversion of an integer expression to a different signedness is not allowed

Regarding the memset prototype,
void *memset (void *s, int c, size_t n);

The content of the test.h file is given see below:
Code:
#ifndef __TEST_H__
#define __TEST_H__

#define CST_UZERO   0U
#define CST_STRIPV4 16U /* IP: AAA.BBB.CCC.DDD */

typedef signed char SINT8_T;
typedef SINT8_T STRIPV4_T[CST_STRIPV4];

void MyFunc(void);

#endif /* __TEST_H__ */

The content of the test.c file is given see below:
Code:
#include "test.h"
#include

void MyFunc(void)
{
    /* Local Variable(s) */
    STRIPV4_T NtpAddr1;
    
    /* Init */
    (void) memset(&NtpAddr1, CST_UZERO, CST_STRIPV4);
    
    return;
}
I've found the problem, the 2nd parameter of memset is a int and not unsigned int.
Then by deleting the U for the constant everything is OK now.

Thanks anyway
Phil