This diagnostic rule was added at users' request.
The analyzer has detected a situation where the 'const' qualifier was removed. Modifying an object, which was declared with the 'const' qualifier, through a pointer/reference to non-'const' type leads to undefined behavior. Besides, such code often indicates poor application design.
Look at the example:
void read_settings(const char *buf);
const char* get_settings_file_name();
bool settings_present();
// ....
void init_settings()
{
const char name[MAX_PATH] = "default.cfg";
if (settings_present())
{
strcpy((char *)name, get_settings_file_name());
}
read_settings(name);
}
To avoid undefined behavior, abandon constancy when declaring a local variable:
void read_settings(const char *buf);
const char* get_settings_file_name();
bool settings_present();
// ....
void init_settings()
{
char name[MAX_PATH] = "default.cfg";
if (settings_present())
{
strcpy(name, get_settings_file_name());
}
read_settings(name);
}
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders:
Take
a chance!