RELEASE NOTES

QA· 9.4.1

February, 2018

Documentation Version 1.3

IMPORTANT NOTICE

DISCLAIMER OF WARRANTY

This document should only be used in conjunction with QA·C 9.4.1. Programming Research Ltd. have taken due care in preparing this document which it has endeavored to ensure is accurate at the time of printing. However, no liability can be accepted for errors or omissions; nor should the document be considered as an expressed or implied warranty of accuracy or completeness, fitness for a particular purpose, or that the products described perform as specified within.

COPYRIGHT NOTICE

All rights reserved. No part of this document may be reproduced, stored in a retrieval system of any nature, or transmitted in any form or by any means, including photocopying and recording, without the prior written permission of Programming Research Ltd., the copyright owner. If any unauthorized acts are carried out in relation to this copyrighted work, a civil claim for damages may be made and/or a criminal prosecution may result. Copyright ©Programming Research Ltd. 2018

TRADEMARKS

PRQA, the PRQA logo, QA·C, QA·C++ and High Integrity C++ (HIC++) are trademarks of Programming Research Ltd. "MISRA", "MISRA C" and "MISRA C++" are registered trademarks of HORIBA MIRA Lim- ited, held on behalf of the MISRA Consortium. "AUTOSAR" is a registered trademark of AUTOSAR GBR, held on behalf of the AU- TOSAR Development Partnership. Yices is a registered trademark of SRI International. Windows is a registered trademark of Microsoft Corporation.

RELEASE NOTES : QA·C 9.4.1 Page i Programming Research Ltd.

CONTACTING PROGRAMMING RESEARCH LTD

For technical support, contact your nearest Programming Research Ltd. authorized dis- tributor or, alternatively, the Programming Research Ltd. head office as follows: by telephone on +44 (0) 1932 888 080 by fax on +44 (0) 1932 888 081 or by webpage: www.prqa.com/services/contact-support/

RELEASE NOTES : QA·C 9.4.1 Page ii Programming Research Ltd.

Contents

1 Introduction1

2 QA·C Changes Overview2 2.1 Functional Changes in QA·C 9.4.1...... 2 2.1.1 Support for Hexadecimal Floating Point...... 2 2.1.2 Enhanced Analysis of Missing Const...... 2 2.2 Functional Changes in QA·C 9.4.0...... 3 2.2.1 Analysis of Commented Out Code...... 3 2.2.2 Other Changes in QA·C 9.4.0...... 4 2.3 Functional Changes in QA·C 9.3.0...... 4 2.3.1 MISRA C 2012 Improvements...... 4 2.3.2 Configuration Changes...... 4 2.3.3 End of line continuation character...... 4 2.4 Functional Changes in QA·C 9.2.0...... 5 2.4.1 Full Support for Designated Initializers...... 5 2.4.1.1 Designated array members resulting in out of bounds..5 2.4.1.2 Overwritten initializers...... 6 2.4.1.3 Diagnostic Locations in Initializers...... 6 2.4.2 Dataflow...... 7 2.4.2.1 Header Function Analysis...... 7 2.4.3 Metric Improvements...... 7 2.4.3.1 Ticket 24385...... 7 2.4.3.2 Ticket 24386...... 9 2.4.3.3 Ticket 24387...... 9 2.4.4 Known Issues...... 9 2.4.4.1 Use of -extensions Option with Assembly...... 9 2.5 Functional Changes in QA·C 9.1.1...... 10 2.5.1 Justification for Comment Based Suppressions...... 10 2.6 Functional Changes in QA·C 9.1.0...... 10 2.6.1 Messages Location Changes...... 10 2.6.2 Support for GCC language extensions...... 11 2.6.2.1 Nested Functions...... 11 2.6.2.2 Statement Expressions...... 11 2.6.3 Dataflow...... 12 2.6.3.1 Query Timeout Message...... 12 2.6.3.2 Buffer Overflow Checking...... 13 2.6.3.3 Parameters Declared with Array Syntax...... 13

3 QA·C Messages 14 3.1 Messages for QA·C 9.4.1...... 14 3.1.1 New Messages...... 14 3.1.2 Messages with Modified Behavior...... 14

RELEASE NOTES : QA·C 9.4.1 Page iii Programming Research Ltd.

3.2 Messages for QA·C 9.4.0...... 41 3.2.1 New Messages...... 41 3.2.2 Messages with Modified Behavior...... 48 3.2.3 Message Text Changes...... 118 3.3 Messages for QA·C 9.3.1...... 120 3.3.1 Messages with Modified Behavior...... 120 3.4 Messages for QA·C 9.3.0...... 125 3.4.1 New Messages...... 125 3.4.2 Removed Messages...... 151 3.4.3 Messages with Modified Behavior...... 153 3.4.4 Message Text Changes...... 362 3.5 Messages for QA·C 9.2.0...... 364 3.5.1 New Messages...... 364 3.5.2 Messages with Modified Behavior...... 372 3.5.3 Message Text Changes...... 450 3.6 Messages for QA·C 9.1.1...... 451 3.6.1 New Messages...... 451 3.6.2 Messages with Modified Behavior...... 451 3.7 Messages for QA·C 9.1.0...... 454 3.7.1 New Messages...... 454 3.7.2 Messages with Modified Behavior...... 468

4 QA·C Ticket Summary 486 4.1 Ticket Summary for QA·C 9.4.1...... 486 4.2 Ticket Summary for QA·C 9.4.0...... 487 4.3 Ticket Summary for QA·C 9.3.1...... 502 4.4 Ticket Summary for QA·C 9.3.0...... 504 4.5 Ticket Summary for QA·C 9.2.0...... 523 4.6 Ticket Summary for QA·C 9.1.1...... 541 4.7 Ticket Summary for QA·C 9.1.0...... 542

RELEASE NOTES : QA·C 9.4.1 Page iv Programming Research Ltd.

1 Introduction

Version 9.4.1 of QA·C is a patch release. This document provides information on the feature additions and fixes made in the re- lease.

RELEASE NOTES : QA·C 9.4.1 Page 1 Programming Research Ltd.

2 QA·C Changes Overview

2.1 Functional Changes in QA·C 9.4.1

2.1.1 Support for C99 Hexadecimal Floating Point

ISO:C99 allows that floating constants can be expressed in hexadecimal representation in addition to decimal representation. In line with this, QA·C is now able to parse the syntax of floating point constants. QA·C also generates a new C99 language extension message (1076) to report the use of hexadecimal floating point constants, for example: /*PRQA S 1076 ++*/ double val = 0x1.1p4; /* Hexadecimal floating constant */

2.1.2 Enhanced Analysis of Missing Const

The QA·C 9.4.1 type system has been reworked to allow for better analysis of missing const, specifically through the analysis of pointer to types. Specifically, QA·C is now able to identify pointers/pointer variables which exist in block scope and point to non-const- qualified types, but which could instead point to const-qualified types. QA·C also generates new messages (3678, 3679 and 3695) to indicate when a local or static pointer variable could be declared with increased const-qualification, for example: /*PRQA S 0-9999 ++*/ /*PRQA S 3678 --*/ void foo (int * x) { int * y; /* No message */ int * z; /* Message 3678 - could be 'int const *' */ int * w; /* Message 3678 - could be 'int const *' */ y = x; z = y; w = z; * y = '\0'; } void take_ip (int * p); void take_icp (int * cp); void take_ipp (int ** pp);

RELEASE NOTES : QA·C 9.4.1 Page 2 Programming Research Ltd.

void bar (int * x) { int * s = x; /* No message */ int * t = x; /* Message 3678 - could be 'int const *' */ int * u = x; /* No message */ take_ip (s); take_icp (t); take_ipp (&u); } void baz (int i) { int arr[] = { 1, 2, 3, 4, 5 }; /* Message 3678 - could be 'int const [5]' */ return arr[i]; } Note: There are known false positive instances of 3678, 3679 and 3695, where typedefs are used to build derived types. For example: typedef int Num;

void incorrect (Num x) { Num a[5] = { x }; // false positive 3678 Num * p = a; p[1] = 6; }

2.2 Functional Changes in QA·C 9.4.0

2.2.1 Analysis of Commented Out Code

QA·C 9.4.0 provides the analysis of commented out code, for both line and block com- ments, by tokenizing comments and using a triplet-based algorithm (described in the message help) to compare the comments against a table of "common code sequences" gathered from real-world, standard-compliant projects. While TU (Translation Unit) code is being parsed, this table is dynamically updated with the sequences of tokens found in the code, and the token statistics for the project currently being parsed are updated accordingly. The configuration option -po comment::dynamic_statistics allows you to control this update behavior. The option is enabled by default, being set to -po comment::dynamic_statistics+.

RELEASE NOTES : QA·C 9.4.1 Page 3 Programming Research Ltd.

If you wish to disable the behavior, for example because you wish to ensure that the same table of "common code sequences" is used for every single TU, then simply set the option to -po comment::dynamic_statistics-.

2.2.2 Other Changes in QA·C 9.4.0

There is improved signal to noise ratio in the analysis of resources. In addition, QA·C 9.4.0 addresses several critical failures.

2.3 Functional Changes in QA·C 9.3.0

2.3.1 MISRA C 2012 Improvements

This release includes many improvements to the coverage of MISRA C 2012, specifically relating to depth of analysis. Detailed information relating to messages added, removed and changed can be found in the QA·C Messages section.

2.3.2 Configuration Changes

2.3.3 End of line continuation character

QA·C formerly treated \new-line as a continuation character. However, this behavior could have resulted in configuration problems that were hard to identify. For example, the following configuration file: -i C:\project\include\include1 -i C:\project\include\include2\ - macro would have been processed as: -i C:\project\include\include1 -i C:\project\include\include2\-d macro which meant that QA·C would have treated macro as a source file to analyze. Therefore, QA·C no longer recognizes \new-line as a continuation character. As a result, the example above would now be parsed as two separate -i options and a single -d option.

RELEASE NOTES : QA·C 9.4.1 Page 4 Programming Research Ltd.

2.4 Functional Changes in QA·C 9.2.0

2.4.1 Full Support for Designated Initializers

The handling of initializers by QA·C has been fully updated allowing for full and correct support for aggregate initializers including their inclusion during dataflow analysis. struct A { int i; int j; int k; };

void foo (void) { int j = 0;

struct A a = { 1 /* 1575 */ , 2 /* 1586 */ , 3 /* 1586 */ , .j=j /* 1398 1575 */ , 0 /* 1398 1398 */ };

1 / a.i; /* OK */ 1 / a.j; /* 2831 */ 1 / a.k; /* 2831 */ } The above example shows several improvements compared to the previous release of QA·C: • The correct value used in the initialization is fully modeled by dataflow, including a sub-message that points to the expression initializing the member. • The location of an overwritten initializer is highlighted by a sub-message as part of the primary message.

2.4.1.1 Designated array members resulting in out of bounds

A non designated initializer appearing after a designated initializer may result in an at- tempt to initialize past the end of the array. Previous versions of QA·C did not detect

RELEASE NOTES : QA·C 9.4.1 Page 5 Programming Research Ltd.

this: void foo (void) { char a[4] = { [3]=1, 2 }; /* 0684 */ }

2.4.1.2 Overwritten initializers

Using designators can result in an earlier initializer being overwritten by a subsequent one. QA·C now includes a sub-message that highlights the overwritten initializer. void foo (void) { char a[4] = { 1 , 2 /* 1586*/ , 3 , [1]=2 /* 1397 */ }; }

2.4.1.3 Diagnostic Locations in Initializers

All of the above changes were made possible by separating the parsing of initializers from the mapping to the type of the declaration. An additional benefit is that locations for diagnostics issued against initializers now refer directly to the initializer and not the token after. void foo (void) { char a[2] = { 1 /* 1292 -- New Location */ , '0' /* 1292 -- Old Location */ }; } We have undertaken to provide as accurate a list as possible for the messages that have had their locations changed. However, given the large number diagnostics that are pos- sible for an initialization it is possible that some messages are not listed. However, it is expected that the majority of differences for most code will come down to a column change. See the QA·C 9.3.0 Modified Messages and QA·C 9.3.0 Ticket Summary for more infor- mation.

RELEASE NOTES : QA·C 9.4.1 Page 6 Programming Research Ltd.

2.4.2 Dataflow

2.4.2.1 Header Function Analysis

The syntax for the -po df::analyse_header_functions option has been changed to en- able greater control over Dataflow analysis of functions defined in header files, particularly when interfunction analysis is enabled. Previously, -po df::analyse_header_functions was a boolean option. The new syntax is: -prodoption df::analyse_header_functions={off|inter|intra} To support existing configurations, enabling this option: -po df::analyse_header_functions+ is equivalent to: -po df::analyse_header_functions=intra The intra setting specifies that functions defined in header files are only inlined when called from a definition in the source file, whereas inter is equivalent to the previous functionality which resulted in analysis of all header functions and inlining of other called functions. As a result, using the intra setting provides an improvement in analysis time particularly for projects that make heavy use of inline functions defined in header files. Please see the QA·C manual for more details.

2.4.3 Metric Improvements

2.4.3.1 Ticket 24385

Metrics STM20 ’Number of Operand Occurrences’ will be updated to improve consistency between QA·C and QA·C++. In particular, the invocation of a macro that expands to an _ignore*/_munch* annotation will be counted. Metrics STM21 ’Number of Operand Occurrences’ will be updated to: (1) no longer in- correctly count twice the ’#’ and ’elif’ tokens of an ’#elif’ preprocessing directive, and (2) no longer incorrectly count the ’if’ and ’else’ tokens of preprocessing directives that are located in included files, when the -ppmetrics option is not enabled. Metrics STFDT ’Number of Distinct Operators in Function’ and STFN1 ’Number of Oper- ator Occurrences in Function’ will be updated to improve consistency between QA·C and QA·C++. In particular, when extensions of the form ’asm ... ’ or ’asm ( ... )’ are used, only the ’asm’ will be counted as an operator, but not the open/close brackets. Metrics STOPN ’Halstead Distinct Operands’ will correctly count the names of ’inline asm’

RELEASE NOTES : QA·C 9.4.1 Page 7 Programming Research Ltd.

functions defined using attribute-style syntax, as contributing to the total number of unique identifiers in the program. Metrics STOPT ’Halstead Distinct Operators’ will no longer incorrectly count the ’if’ and ’else’ tokens of preprocessing directives that are located in included files, when the - ppmetrics option is not enabled. Metrics STTOT ’Total Number of Tokens Used’ will be updated to: (1) always count all preprocessing directives, even if they are located in a section of code that is excluded by other preprocessing directives (2) always count tokens that follow on the same line the ’#if’, ’#ifdef’, ’#elif’, ’#define’ and ’#undef’ preprocessing directives (3) always ignore tokens that follow on the same line the ’#else’, ’#endif’, ’#error’ ’#include’ and other un- recognised directives (4) when assembly language extensions of the form ’asm ... ’ or ’asm ( ... )’ are used, only count the ’asm’ token, but not the open/close brackets (5) no longer incorrectly count twice the ’#’ and ’elif’ tokens of an ’#elif’ preprocessing directive (6) no longer incorrectly count the ’if’ and ’else’ tokens of preprocessing directives that are located in included files, when the -ppmetrics option is not enabled. Metrics STVAR ’Total Number of Identifiers’ will be updated to: (1) always count all prepro- cessing directives, even if they are located in a section of code that is excluded by other preprocessing directives (2) always count tokens that follow on the same line the ’#if’, ’#ifdef’, ’#elif’, ’#define’ and ’#undef’ preprocessing directives (3) always ignore tokens that follow on the same line the ’#else’, ’#endif’, ’#error’ ’#include’ and other unrecognised directives (4) correctly count the names of ’inline asm’ functions defined using attribute- style syntax, as contributing to the total number of unique identifiers in the program. Metrics STAV1, STAV2 and STAV3 ’Average Size of Statement in Function’ depend on STFN1, therefore these metrics will also be affected by the update. Metrics STHAL ’Halstead Prediction of STTOT’ and STZIP ’Zipf Prediction of STTOT’ de- pend on STOPN and STOPT, therefore these metrics will also be affected by the update. Metrics STSHN ’Shannon Information Content’ depends on STOPN, STOPT and STZIP, therefore this metrics will also be affected by the update. Metrics STVOL ’Program Volume’ depends on STOPN, STOPT and STTOT, therefore this metrics will also be affected by the update. Metrics STDIF ’Program Difficulty’ depends on STVOL and STVAR, therefore this metrics will also be affected by the update. Metrics STEFF ’Program Effort’ depends on STVOL and STDIF, therefore this metrics will also be affected by the update. Metrics STDEV ’Estimated Development Time’ and STBUG ’Residual Bugs (Token-Based Estimate)’ depend on STEFF, therefore these metrics will also be affected by the update.

RELEASE NOTES : QA·C 9.4.1 Page 8 Programming Research Ltd.

2.4.3.2 Ticket 24386

The calculation of function metrics STLIN ’Number of Code Lines’ will be adjusted in cases where the code contains statement expressions and/or nested functions, which are GCC language extensions. In particular: (1) the STLIN of a statement expression will always be zero (2) the STLIN of a function containing a statement expression will also include the lines of that statement expression (3) the STLIN of a function containing a nested function will also include the lines of that nested function. Note that the STLIN of a nested function will remain unchanged, still counting the lines of that nested function. The calculation of function metrics STXLN ’Number of Executable Lines’ will be adjusted so that: (1) defining declarations (i.e. declarations with initialisers) will only contribute lines that pertain to their initialiser, starting from the line that contains the ’=’ token (2) the STXLN of a statement expression will always be zero (3) the STXLN of a function containing a statement expression will also include the executable lines of that statement expression. The calculation of function metrics STKDN ’Knot Density’ and STPDN ’Path Density’ de- pends on STXLN, therefore these metrics will also be affected by the update.

2.4.3.3 Ticket 24387

The calculation of file metrics STCDN ’Comment to Code Ratio’ will count ’/’ characters that belong to the code (e.g. that form the ’/’ or ’/=’ operators), and will not count ’\’ char- acters that are immediately followed by a new-line character (i.e. used for line splicing).

2.4.4 Known Issues

2.4.4.1 Use of -extensions Option with Assembly

There is a known issue in QA·C9.2.0 when using the -extensions / -ex option with source files that contain the asm keyword. Enabling all extensions by setting the option to -ex+ or -ex all will cause a parse error (message 0907) against the use of the asm keyword. The workaround is to enable all of the extensions individually as required e.g. -ex vms -ex convex -ex dollar -ex c++ -ex pc -ex ansipc -ex asm

RELEASE NOTES : QA·C 9.4.1 Page 9 Programming Research Ltd.

-ex svr4 -ex longlong -ex sl

2.5 Functional Changes in QA·C 9.1.1

2.5.1 Justification for Comment Based Suppressions

The syntax for the comment based suppressions has been extended to allow for justifica- tion text to be associated with the suppression annotation. For Example: doSomething(a, b); // PRQA S 1234 # This is allowed The # delimiter is used to indicate the start of the optional justification text. See the QA·C manual for details of the changes to the syntax of comment based suppressions.

2.6 Functional Changes in QA·C 9.1.0

2.6.1 Messages Location Changes

The QA· has been updated to improve consistency with QA·C++ and to lay the groundwork for the future use of a preprocessor common to both tools. The focus of this work in 9.1.0 are fixes to the location of tokens and messages. For example, previous versions of QA·C would issue diagnostics relating to the trailing comma in an enumerator on the token after the comma: enum E { E0, /* ^ * Location for new release */ }; /* ^ * Location for previous releases */ The calculation of metrics STTLN, STVAR, STDEV, STDIF, STEFF, STHAL, STOPN, STSHN, STVOL, STZIP have also been affected as a result of this change. Note: Messages that are known to have changed as a result of ticket 20522 are listed

RELEASE NOTES : QA·C 9.4.1 Page 10 Programming Research Ltd.

in Messages with Modified Behavior. These messages were discovered as a result of extensive regression testing of QA·C. However, it is possible that the location of other QA·C messages will have changed in rare cases.

2.6.2 Support for GCC language extensions

2.6.2.1 Nested Functions

QA·C now fully supports the GCC nested function language extension. For example: int f1(int j) { int f2(int i) { return i + j; } return f2(10); }

2.6.2.2 Statement Expressions

With the addition of nested function support, QA·C has improved statement expression support by mapping them to nested functions. For example, the statement expression: int f3(void) { return ({ int i = 0; i; }); } will be modeled by QA·C as a call to a nested function: int f3(void) { void statement_expr_0_2_10 (void) { int i; return i; } return statement_expr_0_2_10 (); } The improved support for statement expressions may result in a significant difference in messages generated for projects that make use the extension. For example: 1. message 1021 will be generated at the start and not at the end of a statement expression 2. message 3200 instead of message 3112 will be generated against the statement

RELEASE NOTES : QA·C 9.4.1 Page 11 Programming Research Ltd.

expression if its result not used 3. message 3112 will no longer be generated against the last statement in a statement expression 4. the generation of messages related to the type of the result of a statement expres- sion will be corrected, this improves the behavior of e.g. messages 0436, 1253, 1291, 1840, 4447, etc. 5. effects across the boundaries of statement expression will be analyzed, so that the behavior of various messages with respect to statement expressions will improve, including e.g. messages 0769, 0770, 0711, 2205, 2212, 3196, 3203, 3220, etc. and also potentially all dataflow messages. Note: Messages that are known to have changed as a result of ticket 11994 are listed in Messages with Modified Behavior. These messages were discovered as a result of extensive regression testing of QA·C. However, it is possible that all QA·C messages related to evaluation of expressions and statements in general could be affected by the introduction of this new feature and these messages are not explicitly listed in Messages with Modified Behavior. As a case in point, there are more than 600 messages in QA·C related to casts, conversions, statements and expressions for which there could potentially be a construct involving a statement expression that would result in different behavior between QA·C 9.1.0 and earlier versions.

2.6.3 Dataflow

2.6.3.1 Query Timeout Message

A new dataflow option df::query_timeout_message has been introduced to generate an analysis message

2758: Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis contin- ues with the next query. whenever a solver query times out, regardless of the df::function _timeout configuration. Previously, it was possible to guarantee that a diagnostic is generated on query timeout only by setting df::query_timeout to be greater than or equal to df::function_timeout, with message 2755 generated in this case. However, this has two undesired side effects: • analysis of the current function will not be completed after a query times out • solver is run in a conservative mode, to guarantee that the time taken does not exceed the specified df::query_timeout, which may mean that a timeout is more likely

RELEASE NOTES : QA·C 9.4.1 Page 12 Programming Research Ltd.

On the other hand, the df::query_timeout_message option does not suffer from these side effects; therefore, it is recommended that df::function_timeout is no longer used, or is set to be greater than df::query_timeout.

2.6.3.2 Buffer Overflow Checking

QA·C detects buffer overflow by checking that a pointer is within the bounds of the object it refers to. However, previously, the analysis did not include the width of the dereferenced type when performing the analysis. For example: #include void foo (void) { int * p = (int*)malloc(2); // sizeof(int) == 4 *p = 0; // 2 byte invalid read previously not detected } QA·C 9.4.1 now correctly identifies this problem. In addition, for intra-function dataflow, QA·C 9.4.1 will use the dimension of parameters declared as arrays when performing out of bounds checking when that parameter is used. For example: void foo (int array[4]) { array[5]; // 2840 Constant: Dereference of an invalid pointer value. }

2.6.3.3 Parameters Declared with Array Syntax

QA·C will generate a message if an array passed as an argument to a function does not have as many elements as the array declarator of the function parameter. For example: void foo1 (int array[4]); void foo2 () { int array[2]; foo1(array); // 2781: Definite: Function argument has fewer elements // than the array dimension in the parameter declaration. } Note: This analysis will not be run for functions that are inlined by QA·C 9.4.1, that is when QA·C is run with a non zero -po df::inter setting.

RELEASE NOTES : QA·C 9.4.1 Page 13 Programming Research Ltd.

3 QA·C Messages

3.1 Messages for QA·C 9.4.1

3.1.1 New Messages

The following table lists messages which are new in QA·C 9.4.1.

Table 3.1: Messages Added for QA·C 9.4.1

Msg. Id. Description [C99] Use of hexadecimal floating constant. Ticket(s): 1076 23566 Added support for parsing of C99 hexadecimal floating con- stants. The object referenced by ’%1s’ is not modified through it, so ’%1s’ could be declared with type ’%2s’. Ticket(s): 3678 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The object referenced by ’%1s’ is not modified through it, so ’%1s’ could be declared with type ’%2s’. Ticket(s): 3679 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. ’%1s’ indirectly refers to objects it does not modify, so could potentially be declared with type ’%2s’. Ticket(s): 3695 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification.

3.1.2 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

RELEASE NOTES : QA·C 9.4.1 Page 14 Programming Research Ltd.

Table 3.2: Messages Modified for QA·C 9.4.1 Msg. Id. Description Redundant type qualifier used in cast Ticket(s): 0318 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. [S] The identifier ’%s’ has not been declared. Ticket(s): 0434 23566 Added support for parsing of C99 hexadecimal floating con- stants. [C] The address-of operator ’&’ cannot be applied to an object declared with ’register’. Ticket(s): 0454 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. [C] 2nd and 3rd operands of conditional operator ’?’ must have com- patible types. Ticket(s): 0540 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Argument for memory size does not refer to ’sizeof (%s)’. Ticket(s): 0701 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The value of this implicitly-specified enumeration constant is not unique. Ticket(s): 0724 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. [C] ’return exp;’ found in ’%s()’ whose return type is ’void’. Ticket(s): 0746 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. [C] ’return exp;’ found in ’%s()’ whose return type is qualified ’void’. Ticket(s): 0747 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 15 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description [S] Unexpected token. Ticket(s): 0907 23566 Added support for parsing of C99 hexadecimal floating con- stants. [C] A variable length array may not be initialized. Ticket(s): 0941 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Parameter identifiers missing in declaration of a function type. Ticket(s): 1336 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Comparing the representations of objects of different types. Ticket(s): 1487 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. 1820 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation. 1821 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation. 1822 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 16 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation. 1823 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation. 1824 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this arith- metic operation. 1830 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation. 1831 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this rela- tional operation. 1832 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this equality operation. 1833 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 17 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description The %1s operand is constant, ’essentially signed’ (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this condi- tional operation. 1834 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. 1840 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation. 1841 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this relational operation. 1842 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this equality operation. 1843 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation. 1844 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 18 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this arithmetic operation. Ticket(s): 1850 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this bitwise operation. Ticket(s): 1851 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this relational operation. Ticket(s): 1852 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this equality operation. Ticket(s): 1853 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this conditional operation. Ticket(s): 1854 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The operands of this arithmetic operator are of different ’essential signedness’ but will generate a result of type ’signed int’. Ticket(s): 1860 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The operands of this bitwise operator are of different ’essential signed- ness’ but will generate a result of type ’signed int’. Ticket(s): 1861 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 19 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description The operands of this relational operator are of different ’essential signedness’ but will both be promoted to ’signed int’ for comparison. Ticket(s): 1862 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The operands of this equality operator are of different ’essential signed- ness’ but will both be promoted to ’signed int’ for comparison. Ticket(s): 1863 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The 2nd and 3rd operands of this conditional operator are of different ’essential signedness’. The result will be in the promoted type ’signed int’. 1864 Ticket(s): 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. ’%s’ is not aligned with the previously declared identifier. Ticket(s): 2211 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Hard-coded ’magic’ integer constant, ’%s’. Ticket(s): 3120 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. This cast is redundant. Ticket(s): 3212 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The parameter ’%s’ is never modified and so it could be declared with the ’const’ qualifier. Ticket(s): 3227 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 20 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Storage class specifier not positioned at the beginning of declaration. Ticket(s): 3228 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The object addressed by the pointer parameter ’%s’ is not modified and so the pointer could be of type ’pointer to const’. Ticket(s): 3673 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Function parameter declared with type qualification which differs from previous declaration. Ticket(s): 3675 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. The elements of the array parameter ’%s’ are not modified and so they could be qualified as ’const’. Ticket(s): 3677 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to signed char. Ticket(s): 3700 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to unsigned char. Ticket(s): 3701 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to short. Ticket(s): 3702 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 21 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: char to unsigned short. Ticket(s): 3703 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to int. Ticket(s): 3704 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to unsigned int. Ticket(s): 3705 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to long. Ticket(s): 3706 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to unsigned long. Ticket(s): 3707 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to float. Ticket(s): 3708 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to double. Ticket(s): 3709 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to long double. Ticket(s): 3710 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 22 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned char to char. Ticket(s): 3711 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to signed char. Ticket(s): 3712 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to short. Ticket(s): 3713 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to int. Ticket(s): 3715 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to long. Ticket(s): 3717 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to float. Ticket(s): 3719 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to double. Ticket(s): 3720 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to long double. Ticket(s): 3721 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 23 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: signed char to char. Ticket(s): 3722 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to unsigned char. Ticket(s): 3723 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to unsigned short. Ticket(s): 3725 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to unsigned int. Ticket(s): 3727 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to unsigned long. Ticket(s): 3729 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to float. Ticket(s): 3730 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to double. Ticket(s): 3731 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to long double. Ticket(s): 3732 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 24 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: short to char. Ticket(s): 3733 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to signed char. Ticket(s): 3734 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to unsigned char. Ticket(s): 3735 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to unsigned short. Ticket(s): 3736 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to unsigned int. Ticket(s): 3738 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to unsigned long. Ticket(s): 3740 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to float. Ticket(s): 3741 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to double. Ticket(s): 3742 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 25 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: short to long double. Ticket(s): 3743 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to char. Ticket(s): 3744 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to signed char. Ticket(s): 3745 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to unsigned char. Ticket(s): 3746 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to short. Ticket(s): 3747 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to int. Ticket(s): 3748 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to long. Ticket(s): 3750 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to float. Ticket(s): 3752 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 26 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned short to double. Ticket(s): 3753 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to long double. Ticket(s): 3754 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to char. Ticket(s): 3755 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to signed char. Ticket(s): 3756 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to unsigned char. Ticket(s): 3757 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to short. Ticket(s): 3758 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to unsigned short. Ticket(s): 3759 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to unsigned int. Ticket(s): 3760 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 27 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: int to unsigned long. Ticket(s): 3762 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to float. Ticket(s): 3763 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to double. Ticket(s): 3764 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: int to long double. Ticket(s): 3765 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to char. Ticket(s): 3766 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to signed char. Ticket(s): 3767 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to unsigned char. Ticket(s): 3768 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to short. Ticket(s): 3769 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 28 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned int to unsigned short. Ticket(s): 3770 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to int. Ticket(s): 3771 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to long. Ticket(s): 3772 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to float. Ticket(s): 3774 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to double. Ticket(s): 3775 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to long double. Ticket(s): 3776 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to char. Ticket(s): 3777 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to signed char. Ticket(s): 3778 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 29 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: long to unsigned char. Ticket(s): 3779 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to short. Ticket(s): 3780 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to unsigned short. Ticket(s): 3781 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to int. Ticket(s): 3782 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to unsigned int. Ticket(s): 3783 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to unsigned long. Ticket(s): 3784 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to float. Ticket(s): 3785 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long to double. Ticket(s): 3786 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 30 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: long to long double. Ticket(s): 3787 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to char. Ticket(s): 3788 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to signed char. Ticket(s): 3789 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to unsigned char. Ticket(s): 3790 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to short. Ticket(s): 3791 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to unsigned short. Ticket(s): 3792 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to int. Ticket(s): 3793 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to unsigned int. Ticket(s): 3794 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 31 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned long to long. Ticket(s): 3795 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to float. Ticket(s): 3796 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to double. Ticket(s): 3797 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to long double. Ticket(s): 3798 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to char. Ticket(s): 3799 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to signed char. Ticket(s): 3800 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to unsigned char. Ticket(s): 3801 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to short. Ticket(s): 3802 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 32 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: float to unsigned short. Ticket(s): 3803 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to int. Ticket(s): 3804 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to unsigned int. Ticket(s): 3805 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to long. Ticket(s): 3806 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to unsigned long. Ticket(s): 3807 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to char. Ticket(s): 3810 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to signed char. Ticket(s): 3811 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to unsigned char. Ticket(s): 3812 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 33 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: double to short. Ticket(s): 3813 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to unsigned short. Ticket(s): 3814 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to int. Ticket(s): 3815 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to unsigned int. Ticket(s): 3816 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to long. Ticket(s): 3817 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to unsigned long. Ticket(s): 3818 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to float. Ticket(s): 3819 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to char. Ticket(s): 3821 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 34 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: long double to signed char. Ticket(s): 3822 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to unsigned char. Ticket(s): 3823 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to short. Ticket(s): 3824 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to unsigned short . Ticket(s): 3825 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to int. Ticket(s): 3826 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to unsigned int. Ticket(s): 3827 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to long. Ticket(s): 3828 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to unsigned long. Ticket(s): 3829 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 35 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: long double to float. Ticket(s): 3830 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to double. Ticket(s): 3831 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to long long. Ticket(s): 3832 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: char to unsigned long long. Ticket(s): 3833 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned char to long long. Ticket(s): 3834 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: signed char to unsigned long long. Ticket(s): 3837 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: short to unsigned long long. Ticket(s): 3839 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned short to long long. Ticket(s): 3840 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 36 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: int to unsigned long long. Ticket(s): 3843 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned int to long long. Ticket(s): 3844 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long to long long. Ticket(s): 3848 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to char. Ticket(s): 3850 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to signed char. Ticket(s): 3851 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to unsigned char. Ticket(s): 3852 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to short. Ticket(s): 3853 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to unsigned short. Ticket(s): 3854 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 37 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: long long to int. Ticket(s): 3855 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to unsigned int. Ticket(s): 3856 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to long Ticket(s): 3857 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to unsigned long. Ticket(s): 3858 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to unsigned long long. Ticket(s): 3859 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to float. Ticket(s): 3860 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to double. Ticket(s): 3861 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long long to long double. Ticket(s): 3862 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 38 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned long long to char. Ticket(s): 3863 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to signed char. Ticket(s): 3864 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to unsigned char. Ticket(s): 3865 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to short. Ticket(s): 3866 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to unsigned short. Ticket(s): 3867 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to int. Ticket(s): 3868 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to unsigned int. Ticket(s): 3869 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to long. Ticket(s): 3870 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 39 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: unsigned long long to unsigned long. Ticket(s): 3871 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to long long. Ticket(s): 3872 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to float. Ticket(s): 3873 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to double. Ticket(s): 3874 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: unsigned long long to long double. Ticket(s): 3875 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to long long. Ticket(s): 3876 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: float to unsigned long long. Ticket(s): 3877 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: double to long long. Ticket(s): 3878 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 40 Programming Research Ltd.

Table 3.2 – continued from previous page Msg. Id. Description Implicit conversion: double to unsigned long long. Ticket(s): 3879 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to long long. Ticket(s): 3880 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Implicit conversion: long double to unsigned long long. Ticket(s): 3881 15746 Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification.

3.2 Messages for QA·C 9.4.0

3.2.1 New Messages

The following table lists messages which are new in QA·C 9.4.0.

Table 3.3: Messages Added for QA·C 9.4.0

Msg. Id. Description [E] This file contains the control-M character in the middle of a line. Ticket(s): 25447 Restored behaviour of message 0240 to warn when a carriage- 0242 return is detected at the end of a line on a platform which uses only line feeds to mark end-of-line. Added new message 0242 to warn when a carriage-return is detected in a different context. Array initialized with designators has fewer initializers than its declared size. Default initialization is applied to the remainder of the array ele- ments. Ticket(s): 0691 24803 New analysis to highlight arrays with explicit initializers for some, but not all, elements. 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 41 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description Structure initialized with designators has fewer initializers than its de- clared size. Default initialization is applied to the remainder of the mem- bers. 0704 Ticket(s): 24803 New analysis to highlight arrays with explicit initializers for some, but not all, elements. String literal is being modified. Ticket(s): 0754 24746 New message 0754 instead of 0556 and 0447 to identify a string literal being modified. Multiple jump statements are used to terminate this iteration statement, including ’goto’. Ticket(s): 0772 24843 New messages 0772 and 0773 to warn when a loop has multiple exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. Multiple jump statements are used to terminate this iteration statement, including ’return’. Ticket(s): 0773 24843 New messages 0772 and 0773 to warn when a loop has multiple exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. Macro parameter ’%s’ is inconsistently subject to macro replacement. Ticket(s): 0895 24856 New message 0895 to mark the point of declaration of a macro parameter which is subjected to inconsistent expansion. The macro ’%s’ must not be expanded. Ticket(s): 1007 24845 New option -warnmacroexpansion (-WME) and message 1007 to warn on expansion of the specified macro. [C] A typedef or pointer to function is being declared with default argu- ment syntax. This is not allowed. Ticket(s): 1080 25592 Fixed crashes seen on certain uses of the default parameter value extension; added new message 1080 to warn when the extension becomes a constraint violation. Macro ’%1s’ expanded here. Ticket(s): 1567 24845 New option -warnmacroexpansion (-WME) and message 1007 to warn on expansion of the specified macro. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 42 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description An operand of ’essentially enum’ type is being added or subtracted from an operand of ’essentially character’ type. Ticket(s): 1814 24805 QAC will generate message 1814 whenever an expression of essentially enum type is added or subtracted with an expression with essentially character type. The preceding ’switch’ clause is not empty and ends with a jump state- ment other than ’break’. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2023 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. Final ’switch’ clause ends with a ’jump’ statement other than ’break’. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2024 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. This appears to jump across a nested function scope boundary. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2025 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. This line comment appears to comment out source code. Ticket(s): 2052 24695 Added new messages 2052 and 2053 to warn when a line or block comment respectively appears to contain commented-out code. This block comment appears to comment out source code. Ticket(s): 2053 24695 Added new messages 2052 and 2053 to warn when a line or block comment respectively appears to contain commented-out code. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 43 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description Unable to identify a loop control variable because of indirection. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2473 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control is shared between multiple variables. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2474 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control is shared with an indirect variable. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2475 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Call to ’%s’ is not immediately preceded by the explicit zero-ing of ’er- rno’. However, ’errno’ is implicitly zero because of the context. 2504 Ticket(s): 24876 Messages 2500 and 2501 are no longer generated when ’errno’ has been tested against zero for the current path. Definite: Use of an object after its lifetime has ended. Ticket(s): 2826 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. Apparent: Use of an object after its lifetime has ended. Ticket(s): 2827 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. Suspicious: Use of an object after its lifetime has ended. Ticket(s): 2828 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. Definite: Storing the address of an object in a pointer that has greater lifetime. Ticket(s): 2916 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. 25802 Internal refactoring of flow graph analysis. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 44 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description Apparent: Storing the address of an object in a pointer that has greater lifetime. 2917 Ticket(s): 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. Suspicious: Storing the address of an object in a pointer that has greater lifetime. Ticket(s): 2918 21292 The assignment of a local variable’s address of objects with longer lifetime is not always detected. 25802 Internal refactoring of flow graph analysis. Possible: Storing the address of an object in a pointer that has greater lifetime. 2919 Ticket(s): 24850 See 21292. Constant: Dereference of an invalid char pointer value. Ticket(s): 2935 24869 Message 2840-2844 range has been replaced by range 2935- 2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. Definite: Dereference of an invalid char pointer value. Ticket(s): 2936 24869 Message 2840-2844 range has been replaced by range 2935- 2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. Apparent: Dereference of an invalid char pointer value. Ticket(s): 2937 24869 Message 2840-2844 range has been replaced by range 2935- 2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. Suspicious: Dereference of an invalid char pointer value. Ticket(s): 2938 24869 Message 2840-2844 range has been replaced by range 2935- 2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. Possible: Dereference of an invalid char pointer value. Ticket(s): 2939 24869 Message 2840-2844 range has been replaced by range 2935- 2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 45 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description Unable to parse ’%1s_macro’ arguments; ignoring #pragma. Ticket(s): 3142 24414 Support added for Visual Studio push_macro/pop_macro fea- ture. ’%1s_macro’ with non-macro identifier ’%2s’. Ticket(s): 3143 24414 Support added for Visual Studio push_macro/pop_macro fea- ture. Ignoring ’pop_macro’ with empty macro stack for ’%1s’. Ticket(s): 3144 24414 Support added for Visual Studio push_macro/pop_macro fea- ture. This inline function declaration for ’%s’ is implicitly static. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 3241 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. This inline function declaration for ’%s’ prevents it from being defined with internal linkage. Ticket(s): 3242 24801 New messages 3241 to warn when inline function declarations are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. The definition for identifier ’%s’ with external linkage conflicts with a previous declaration in the same scope. Ticket(s): 3331 24749 New message 3331 to indicate when the definition for an identi- fier with external linkage conflicts with a previous declaration in the same scope. Controlling expression of ’while’ loop is a floating point comparison. Ticket(s): 3350 24838 New message 3350 to highlight when a while loop is controlled by a floating-point comparison. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 46 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description A full expression containing an increment (++) or decrement (–) opera- tor should have no potential side effects other than that caused by the increment or decrement operator. Ticket(s): 3387 24835 New message 3387 to identify use of increment or decrement operator in an expression that has another side effect. Detection of volatile access has also been improved, in particular when involving addresses of volatile objects. Expression operand to sizeof is not parenthesized. Ticket(s): 3433 24813 New messages 3433 and 3434 to indicate when sizeof or alignof are being used with a non-parenthesized expression operand. Expression operand to alignof is not parenthesized. Ticket(s): 3434 24813 New messages 3433 and 3434 to indicate when sizeof or alignof are being used with a non-parenthesized expression operand. This usage of a function-like macro looks like it could be replaced by an equivalent function call. Ticket(s): 3469 24715 New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C func- tion. Some uses of this function-like macro look like they could be replaced by equivalent function calls. Ticket(s): 3471 24715 New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C func- tion. All toplevel uses of this function-like macro look like they could be re- placed by equivalent function calls. Ticket(s): 3472 24715 New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C func- tion. This usage of a function-like setter macro looks like it could be replaced by a similar function call. Ticket(s): 3473 24715 New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C func- tion. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 47 Programming Research Ltd.

Table 3.3 – continued from previous page Msg. Id. Description The implementation of this struct/union type should be hidden. 3630 Ticket(s): 24697 The implementation of this struct/union type should be hidden. The elements of the array parameter ’%s’ are not modified and so they could be qualified as ’const’. Ticket(s): 3677 21553 New message 3677 to indicate when the element type of an array or pointer to array function parameter should be declared with const qualifier. Also fixed false negative 3673 on operations which involve multiple pointer dereferences.

3.2.2 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

Table 3.4: Messages Modified for QA·C 9.4.0

Msg. Id. Description [E] This file contains the control-M character at the end of a line. Ticket(s): 25447 Restored behaviour of message 0240 to warn when a carriage- 0240 return is detected at the end of a line on a platform which uses only line feeds to mark end-of-line. Added new message 0242 to warn when a carriage-return is detected in a different context. [S] Comment open at end of translation unit. Ticket(s): 0268 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [C] Overflow in signed arithmetic operation on constant operands. Ticket(s): 0278 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 48 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [U] The address of an array declared ’register’ may not be computed. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0304 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. [L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99. Ticket(s): 0375 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. [U] ’%s’ is modified more than once between sequence points - evalu- ation order unspecified. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 0400 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. [U] ’%s’ may be modified more than once between sequence points - evaluation order unspecified. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 0401 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 49 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [U] ’%s’ is modified and accessed between sequence points - evalua- tion order unspecified. Ticket(s): 21171 Message 0402 will no longer be incorrectly generated in cer- tain situations involving assignment between structure mem- bers, which are of function pointer type and which are accessed through pointers. 0402 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. [U] ’%s’ may be modified and accessed between sequence points - evaluation order unspecified. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 0403 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. More than one read access to volatile objects between sequence points. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 0404 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 50 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description More than one modification of volatile objects between sequence points. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 0405 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. [L] Nesting of parentheses exceeds 32 - program does not conform strictly to ISO:C90. Ticket(s): 0410 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. [S] The identifier ’%s’ has not been declared. Ticket(s): 0434 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. [C] An array subscript must have integral type. Ticket(s): 0453 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. Right operand of shift operator is greater than or equal to the width of the essential type of the left operand. Ticket(s): 0499 24824 Message 0499 will be correctly generated in certain situations where the left hand side operand of the shift operator is a con- stant expression. Note that this update will clear some false negatives in the enforcement of MISRA C:2012 Rule 12.2. [C] Controlling expression must have scalar (arithmetic or pointer) type. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 0542 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 51 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [U] The value of an incomplete ’union’ may not be used. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0544 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. [U] The value of an incomplete ’struct’ may not be used. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0545 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. [C] ’enum %s’ has unknown content. Use of an enum tag with unde- fined content is not permitted. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0546 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. [C] Left operand of assignment must be a modifiable object. Ticket(s): 0556 24746 New message 0754 instead of 0556 and 0447 to identify a string literal being modified. [L] More than 12 pointer, array or function declarators modifying a dec- laration - program does not conform strictly to ISO:C90. Ticket(s): 0609 24849 Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. [C99] ’volatile’ qualifier has been duplicated. Ticket(s): 0618 14326 The analysis will no longer abort, and message 0618 will no longer be incorrectly generated in certain situations involving a cast to volatile qualifier only (with an implicit ’int’ type). [C] The struct/union ’%s’ cannot be initialized because it has unknown size. 0621 Ticket(s): 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 52 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [C] ’%s’ has different type to previous declaration in the same scope. Ticket(s): 0627 24749 New message 3331 to indicate when the definition for an identi- fier with external linkage conflicts with a previous declaration in the same scope. [I] Bit-field %s in %s has not been declared explicitly as unsigned or signed. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0634 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. [E] Bit-field %s in %s has been declared with a type not explicitly sup- ported. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0635 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. [U] Using ’const’ or ’volatile’ in a function return type is undefined. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0654 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 53 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [C] Function return type cannot be function or array type, or an incom- plete struct/union (for function definition). Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0656 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. [C] Initializer points to a more heavily qualified type. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0673 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. [u] Array element is of function type. Arrays cannot be constructed from function types. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0676 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. [u] Array element is array of unknown size. Arrays cannot be con- structed from incomplete types. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 0678 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 54 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [u] Array element is ’void’ or an incomplete ’struct’ or ’union’. Arrays cannot be constructed from incomplete types. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields rather than the containing structs. In addition, the -intrinsictype 0680 option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. [C] Too many initializers. Ticket(s): 0684 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. Argument for memory size does not refer to ’sizeof (%s)’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0701 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. Result of sizeof operator is not explicitly cast. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 0702 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. [C] No definition found for the label ’%s’ in this function. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0708 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. [C] ’continue’ statement found outside an iteration statement. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0766 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 55 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [C] ’break’ statement found outside a ’switch’ or iteration statement. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0767 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. [C] ’case’ or ’default’ found outside a ’switch’ statement. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0768 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. A ’break’ statement has been used to terminate an iteration statement. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0769 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. A ’continue’ statement has been used. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 0770 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. More than one ’break’ statement has been used to terminate this itera- tion statement. Ticket(s): 0771 24843 New messages 0772 and 0773 to warn when a loop has multiple exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. [C] ’auto’ may not be specified on global declaration of ’%s’. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 0774 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 56 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [C] ’register’ may not be specified on global declaration of ’%s’. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 0775 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. This translation unit makes use of floating types. Ticket(s): 0790 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. [C] The ’#’ operator may only appear before a macro parameter. Ticket(s): 0803 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [C] Macro parameter ’%s’ is not unique. Ticket(s): 0804 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [S] Closing quote or bracket ’>’ missing from include filename. Ticket(s): 0817 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [Q] Cannot find ’%s’ - Perhaps the appropriate search path was not given ? Ticket(s): 0818 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [C] ’#include’ does not identify a header or source file that can be pro- cessed. Ticket(s): 0821 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. File ’%1s’ has already been included directly from within file ’%2s’. Ticket(s): 0838 21397 Messages 0838 and 0839 are issued inside the problematic header file instead of the source file, when applicable. This makes it possible to suppress the message with the -q option. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 57 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description File ’%1s’ has already been included indirectly from within file ’%2s’. Ticket(s): 0839 21397 Messages 0838 and 0839 are issued inside the problematic header file instead of the source file, when applicable. This makes it possible to suppress the message with the -q option. [S] ’#define’ must be followed by an identifier. Ticket(s): 0846 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [C] More arguments in macro call than specified in definition. Ticket(s): 0851 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [S] Unable to find the ’)’ that marks the end of the macro call. Ticket(s): 0852 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [U] Use of ’defined’ must match either ’defined(identifier)’ or ’defined identifier’. Ticket(s): 0887 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. Macro argument ’%s’ is both expanded as a macro and used with the ’%s’ operator. 0893 Ticket(s): 24856 New message 0895 to mark the point of declaration of a macro parameter which is subjected to inconsistent expansion. [I] Cast of integer constant expression to a signed integer type which cannot represent the value. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 0974 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 58 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description [C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro. Ticket(s): 1033 25815 The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of array elements. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 1062 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. Floating constant cast to integral type. Ticket(s): 1269 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. Function ’main’ cannot be called or have its address taken in C++. Ticket(s): 1324 25268 Reduced overall QAC memory usage; significantly reduced memory usage of array initializers. The parameter identifiers in this function declaration differ from those in a previous declaration. 1330 Ticket(s): 25292 Fixed false positive 1330 on expressions involving a cast to func- tion pointer. Type or number of arguments doesn’t match previous use of the func- tion. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 1331 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. The parameter identifiers in the prototypes of these functions/function pointers are different. 1334 Ticket(s): 25292 Fixed false positive 1330 on expressions involving a cast to func- tion pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 59 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Non-constant expression cast to enum type. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 1482 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. 1840 Ticket(s): 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. A composite expression of ’essentially signed’ type (%1s) is being im- plicitly converted to a wider signed type, ’%2s’. Ticket(s): 1890 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. A composite expression of ’essentially unsigned’ type (%1s) is being implicitly converted to a wider unsigned type, ’%2s’. Ticket(s): 1891 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. A composite expression of ’essentially floating’ type (%1s) is being im- plicitly converted to a wider floating type, ’%2s’. Ticket(s): 1892 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. The 2nd and 3rd operands of this conditional operator are both ’essen- tially signed’ (’%1s’ and ’%2s’) but one is a composite expression of a narrower type than the other. Ticket(s): 1893 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 60 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description The 2nd and 3rd operands of this conditional operator are both ’essen- tially unsigned’ (’%1s’ and ’%2s’) but one is a composite expression of a narrower type than the other. Ticket(s): 1894 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. The 2nd and 3rd operands of this conditional operator are both ’essen- tially floating’ (’%1s’ and ’%2s’) but one is a composite expression of a narrower type than the other. Ticket(s): 1895 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. A ’goto’ statement has been used. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 2001 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. No ’default’ label found in this ’switch’ statement. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2002 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. The preceding ’switch’ clause is not empty and does not end with a ’jump’ statement. Execution will fall through. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2003 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 61 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description A ’continue’ statement has been used. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 2005 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. ’auto’ does not add information to a declaration, and is best avoided. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 2007 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. This ’default’ label is not the final ’case’ label within the ’switch’ block. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2009 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. This ’default’ label is neither the first nor the last label within the ’switch’ block. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2012 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. Final ’switch’ clause does not end with an explicit ’jump’ statement. Ticket(s): 24300 Added new messages to warn when jumps other than ’break’ 2020 are used to terminate switch clauses, and reduced false neg- atives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over clo- sure boundaries. Default argument promotion : float promoted to double. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 2118 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 62 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Indentation of this line is to the left of the current block indentation level. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2200 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. This indentation is not consistent with previous indentation in this file. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2201 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. This closing brace is not aligned appropriately with the matching open- ing brace. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2203 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. ’%s’ is not aligned to match its controlling ’switch’ statement. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2204 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. This brace style is not consistent with ’K&’ style. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2207 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 63 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This brace style is not consistent with ’indented’ style. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2208 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. This brace style is not consistent with ’exdented’ style. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2209 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. ’%s’ is not aligned with the previously declared identifier. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2211 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. Body of control statement is not enclosed within braces. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces delimiting the body of functions. In addition, indent and style 2212 checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. 25067 Fixed false positive 2212 when brace occurs hidden by a macro in same place in header and main file. Matching braces appear on the same line - proper indentation would be preferred. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2213 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 64 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Body of control statement is on the same line and is not enclosed within braces. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2214 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. This indentation is not consistent with configured depth. Ticket(s): 21598 Messages 2207, 2208 and 2209 now also apply to the braces 2215 delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro ar- guments and nonstandard language extensions. Message 2200 description improved. Loop control variable in this ’for’ statement, %s, has file scope. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2461 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. The variable initialized in the first expression of this ’for’ statement is not the variable identified as the ’loop control variable’ (%s). Ticket(s): 2462 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. The variable incremented in the third expression of this ’for’ statement is not the variable identified as the ’loop control variable’ (%s). Ticket(s): 2463 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable, %s, modified twice in for-loop header. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2464 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 65 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This ’for’ loop will only be executed once. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2465 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. The value of this controlling expression is always ’false’. The contained code is unreachable. Ticket(s): 2466 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’for’ statement, %s, is not modified inside loop. Ticket(s): 2467 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’for’ statement, %s, is not modified inside loop but has file scope. Ticket(s): 2468 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’for’ statement, %s, is modified in the body of the loop. Ticket(s): 2469 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Taking address of loop control variable, %s. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2470 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 66 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Unable to identify a loop control variable. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2471 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. More than one possible loop control variable. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2472 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’while’ statement, %s, has file scope. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2481 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’while’ statement, %s, is not modified inside loop. Ticket(s): 2487 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Loop control variable in this ’while’ statement, %s, is not modified inside loop but has file scope. Ticket(s): 2488 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Call to ’%s’ is not immediately preceded by the zero-ing of ’errno’. Ticket(s): 2500 24803 New analysis to highlight arrays with explicit initializers for some, but not all, elements. Zero-ing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. 2502 Ticket(s): 24803 New analysis to highlight arrays with explicit initializers for some, but not all, elements. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 67 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Subtraction of a pointer to an array and a pointer to a non-array. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2668 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Comparison of a pointer to an array and a pointer to a non-array. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2669 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: The value being compared with macro EOF does not originate from an EOF returning function. Ticket(s): 2671 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: The value being compared with macro EOF does not origi- nate from an EOF returning function. Ticket(s): 2674 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 2676 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 2678 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 68 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Using an invalidated value ’%s’ returned from a Standard Li- brary function. Ticket(s): 2681 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 2682 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 2683 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Writing to a file opened for reading. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2686 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Writing to a file opened for reading. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2687 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Writing to a file opened for reading. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2688 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 69 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: The same file will be open with write access and another mode. Ticket(s): 2691 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: The same file will be open with write access and another mode. Ticket(s): 2692 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: The same file will be open with write access and another mode. Ticket(s): 2693 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Attempt to access a file which has been closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2696 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Attempt to access a file which has been closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2697 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Attempt to access a file which has been closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2698 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 70 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Opened file is not closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2701 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Opened file is not closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2702 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Opened file is not closed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2703 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Allocated memory is not deallocated. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2706 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Allocated memory is not deallocated. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2707 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Allocated memory is not deallocated. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2708 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Memory allocation and deallocation mismatch. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2711 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 71 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Memory allocation and deallocation mismatch. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2712 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Memory allocation and deallocation mismatch. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2713 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Memory deallocated multiple times. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2716 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Memory deallocated multiple times. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2717 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Memory deallocated multiple times. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2718 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Deallocation of non dynamic memory. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2721 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Deallocation of non dynamic memory. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2722 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 72 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Deallocation of non dynamic memory. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2723 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Use of uninitialized resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2726 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Use of uninitialized resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2727 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Use of uninitialized resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2728 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Use of destroyed resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2731 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Use of destroyed resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2732 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Use of destroyed resource. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2733 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 73 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Created resource is not destroyed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2736 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Created resource is not destroyed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2737 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Created resource is not destroyed. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2738 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This loop controlling expression is a constant expression and its value is ’true’. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2740 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’if’ controlling expression is a constant expression and its value is ’true’. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, 2741 and remove false positives and negatives when the loop control variable is a pointer. 25465 Fixed false positives due to incorrect constant folding of casts to _Bool. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 74 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This ’if’ controlling expression is a constant expression and its value is ’false’. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, 2742 and remove false positives and negatives when the loop control variable is a pointer. 25465 Fixed false positives due to incorrect constant folding of casts to _Bool. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’do - while’ loop controlling expression is a constant expression and its value is ’false’. The loop will only be executed once. Ticket(s): 2743 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’while’ or ’for’ loop controlling expression is a constant expression and its value is ’false’. The loop will not be entered. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 2744 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Use of uninitialized file handle. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2746 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Use of uninitialized file handle. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2747 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 75 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Use of uninitialized file handle. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2748 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Internal dataflow problem. Dataflow analysis continues with the next function. Please inform Programming Research. Ticket(s): 2750 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This function is too complex. Dataflow analysis continues with the next function. Ticket(s): 2751 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’%1s’ results in the function being too complex. Dataflow analysis continues with the next function. Ticket(s): 2752 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. As a result of error message ’%s’, dataflow analysis of the remainder of this function is not possible. 2753 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. As a result of error message ’%s’, dataflow analysis of the remainder of this translation unit is not possible. 2754 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 76 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Analysis time of function ’%1s’ has exceeded the configured maximum: ’%2sms’. Dataflow analysis continues with the next function. Ticket(s): 2755 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Could not expand function call to ’%1s’ with maximum ’-po df::inter’ value. Ticket(s): 2756 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Could not analyze function ’%1s’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2757 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis continues with the next query. Ticket(s): 2758 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Subtracting pointers that address different objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2761 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Subtracting pointers that address different objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2763 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 77 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Subtracting pointers that address different members of the same object. Ticket(s): 2766 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Subtracting pointers that address different members of the same object. Ticket(s): 2767 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Subtracting pointers that address different members of the same object. Ticket(s): 2768 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Comparing pointers that address different objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2771 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Comparing pointers that address different objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2772 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Comparing pointers that address different objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2773 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 78 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Copy between overlapping objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25549 Message 2776 will no longer be incorrectly generated when a 2776 structure with bit-fields is wrapped in a union and an assignment is made between bit-fields in that structure that are at either side of an 8-bit boundary. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Copy between overlapping objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2777 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Copy between overlapping objects. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2778 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 2781 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 2782 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Function argument has fewer elements than the array di- mension in the parameter declaration for non-inlined call. 2783 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 2784 Ticket(s): 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 79 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 2785 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 2786 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 2789 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Right hand operand of shift operator is negative or too large. Ticket(s): 2790 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Right hand operand of shift operator is negative or too large. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2791 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Right hand operand of shift operator is negative or too large. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2792 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 80 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Right hand operand of shift operator is negative or too large. Ticket(s): 2793 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Calling a standard library character handling function with an invalid character value. Ticket(s): 2796 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Calling a standard library character handling function with an invalid character value. Ticket(s): 2797 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Calling a standard library character handling function with an invalid character value. Ticket(s): 2798 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Calling a standard library character handling function with an invalid character value. Ticket(s): 2799 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 81 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Overflow in signed arithmetic operation. Ticket(s): 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated 2800 at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Overflow in signed arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2801 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Overflow in signed arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2802 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Overflow in signed arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2803 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 2806 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 82 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 2807 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 2808 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 2809 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Dereference of NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2810 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Dereference of NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2811 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. 25802 Internal refactoring of flow graph analysis. Apparent: Dereference of NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2812 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 83 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Dereference of NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2813 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Dereference of NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2814 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. 25802 Internal refactoring of flow graph analysis. Definite: Calling a standard library character input/output function with an invalid character value. Ticket(s): 2816 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Calling a standard library character input/output function with an invalid character value. Ticket(s): 2817 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Calling a standard library character input/output function with an invalid character value. Ticket(s): 2818 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Calling a standard library character input/output function with an invalid character value. Ticket(s): 2819 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 84 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Arithmetic operation on NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2820 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Arithmetic operation on NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2821 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Arithmetic operation on NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2822 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Arithmetic operation on NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2823 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Arithmetic operation on NULL pointer. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2824 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Division by zero. Ticket(s): 2830 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Division by zero. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2831 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 85 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Division by zero. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2832 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Division by zero. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2833 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Division by zero. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2834 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Non-null terminated string used in a string function. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2835 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Non-null terminated string used in a string function. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2836 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Non-null terminated string used in a string function. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2839 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 86 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Dereference of an invalid pointer value. Ticket(s): 24783 False positive 2840 when accessing the last array element of struct type with a _Bool member. 2840 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Dereference of an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2841 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Dereference of an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2842 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Dereference of an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2843 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Dereference of an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2844 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Maximum number of characters to be read/written is larger than the target buffer size. Ticket(s): 2845 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 87 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Maximum number of characters to be read/written is larger than the target buffer size. Ticket(s): 2846 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Maximum number of characters to be read/written is larger than the target buffer size. Ticket(s): 2847 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Maximum number of characters to be read/written is larger than the target buffer size. Ticket(s): 2848 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Maximum number of characters to be read/written is larger than the target buffer size. Ticket(s): 2849 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 2850 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2851 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 88 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 2852 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 2853 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Casting to a signed integer type of insufficient size. Ticket(s): 2855 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Casting to a signed integer type of insufficient size. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2856 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Casting to a signed integer type of insufficient size. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2857 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Casting to a signed integer type of insufficient size. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2858 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 89 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Implementation-defined value resulting from left shift opera- tion on expression of signed type. Ticket(s): 2860 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Implementation-defined value resulting from left shift operation on expression of signed type. Ticket(s): 2861 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Implementation-defined value resulting from left shift opera- tion on expression of signed type. Ticket(s): 2862 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Implementation-defined value resulting from left shift oper- ation on expression of signed type. Ticket(s): 2863 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Using 0 as size parameter of a function call. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2865 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Using 0 as size parameter of a function call. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2866 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 90 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Using 0 as size parameter of a function call. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2867 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Using 0 as size parameter of a function call. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2868 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Using 0 as size parameter of a function call. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2869 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Infinite loop construct with constant control expression. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2870 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Infinite loop identified. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2871 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This loop, if entered, will never terminate. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2872 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This loop will never be executed more than once. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2877 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 91 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This code is unreachable. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2880 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The code in this ’default’ clause is unreachable. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2881 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’switch’ statement will bypass the initialization of local variables. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2882 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This ’goto’ statement will always bypass the initialization of local vari- ables. Ticket(s): 2883 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Function ’main’ ends with an implicit ’return’ statement. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2887 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This function has been declared with a non-void ’return’ type but ends with an implicit ’return ;’ statement. Ticket(s): 2888 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 92 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This function has more than one ’return’ path. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2889 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Negative value implicitly converted to an unsigned type. Ticket(s): 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to 2890 overflow messages. 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Negative value implicitly converted to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2891 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Negative value implicitly converted to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2892 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Negative value implicitly converted to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2893 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Negative value cast to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2895 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 93 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Negative value cast to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2896 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Negative value cast to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2897 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Negative value cast to an unsigned type. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2898 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 2900 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 2901 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 2902 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 94 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 2903 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 2905 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 2906 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 2907 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Positive integer value truncated by cast to a smaller un- signed type. Ticket(s): 2908 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 95 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Constant: Wraparound in unsigned arithmetic operation. Ticket(s): 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated 2910 at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Wraparound in unsigned arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2911 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Wraparound in unsigned arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2912 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Wraparound in unsigned arithmetic operation. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2913 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 2920 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 96 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 2921 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 2922 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 2923 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Computing an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2930 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Computing an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2931 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Computing an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2932 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 97 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Computing an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2933 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Computing an invalid pointer value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2934 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages 2940 will also have their locations improved as part of a general mes- sage location improvement across QAC. 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 2941 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 2942 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 98 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Suspicious: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 2943 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Result of cast is only representable in a two’s complement implementation. Ticket(s): 2945 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Result of cast is only representable in a two’s complement implementation. Ticket(s): 2946 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Result of cast is only representable in a two’s complement implementation. Ticket(s): 2947 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Result of cast is only representable in a two’s complement implementation. Ticket(s): 2948 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Constant: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 2950 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 99 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Definite: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 2951 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 2952 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 2953 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Using object ’%s’ with tainted value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2956 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Possible: Using object ’%s’ with tainted value. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2959 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Using value of uninitialized automatic object ’%s’. Ticket(s): 25294 False Positive 2961 is no longer generated when dereferencing a member of type pointer to function through an array subscript. 2961 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 100 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Using value of uninitialized automatic object ’%s’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2962 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Using value of uninitialized automatic object ’%s’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2963 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Some members of object ’%s’ are uninitialized. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2966 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Some members of object ’%s’ are uninitialized. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2967 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Some members of object ’%s’ are uninitialized. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2968 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 2971 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 101 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Apparent: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 2972 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Passing address of uninitialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 2973 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Definite: Passing address of partially initialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 2976 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Apparent: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 2977 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. Suspicious: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 2978 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The value of this function parameter is never used before being modi- fied. Ticket(s): 2980 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 102 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This initialization is redundant. The value of this object is never used before being modified. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 2981 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This assignment is redundant. The value of this object is never used before being modified. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 2982 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This assignment is redundant. The value of this object is never subse- quently used. Ticket(s): 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement 2983 expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This operation is redundant. The value of the result is always ’%1s’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2984 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 103 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This operation is redundant. The value of the result is always that of the left-hand operand. Ticket(s): 2985 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This operation is redundant. The value of the result is always that of the right-hand operand. Ticket(s): 2986 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. This function call produces no side effects and is redundant. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2987 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The value of this loop controlling expression is always ’true’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2990 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The value of this ’if’ controlling expression is always ’true’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2991 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The value of this ’if’ controlling expression is always ’false’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2992 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 104 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description The value of this ’do - while’ loop controlling expression is always ’false’. The loop will only be executed once. Ticket(s): 2993 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The value of this ’while’ or ’for’ loop controlling expression is always ’false’. The loop will not be entered. Ticket(s): 2994 25305 Dataflow has been improved to model side effects of pointer as- signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The result of this logical operation is always ’true’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2995 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The result of this logical operation is always ’false’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2996 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The first operand of this conditional operator is always ’true’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2997 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. The first operand of this conditional operator is always ’false’. Ticket(s): 25305 Dataflow has been improved to model side effects of pointer as- 2998 signment less conservatively. 25655 Minor performance improvements, and bug fixes due to im- proved modelling of constants and declaration scope in dataflow. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 105 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This initialization is redundant. The value of ’%s’ is never used before being modified. Ticket(s): 3197 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) This assignment is redundant. The value of ’%s’ is never used before being modified. Ticket(s): 3198 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) This assignment is redundant. The value of this object is never used before being modified. Ticket(s): 3199 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) ’%s’ returns a value which is not being used. Ticket(s): 3200 25281 Analysis of unused values returned from a function call now in- cludes calls made through pointer to functions. The label ’%s:’ is not used in this function and could be removed. Ticket(s): 25045 Reduced false positives and negatives for several messages re- 3202 lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) The variable ’%s’ is set but never used. Ticket(s): 25045 Reduced false positives and negatives for several messages re- 3203 lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 106 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description The variable ’%s’ is only set once and so it could be declared with the ’const’ qualifier. Ticket(s): 3204 25045 Reduced false positives and negatives for several messages re- lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) The identifier ’%s’ is not used and could be removed. Ticket(s): 25045 Reduced false positives and negatives for several messages re- 3205 lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) The parameter ’%s’ is not used in this function. Ticket(s): 25045 Reduced false positives and negatives for several messages re- 3206 lating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a state- ment expression is no longer considered a modification.) ’%s()’ returns a value which is sometimes ignored. Ticket(s): 3208 25281 Analysis of unused values returned from a function call now in- cludes calls made through pointer to functions. ’%s()’ returns a value which is always ignored. Ticket(s): 3209 25281 Analysis of unused values returned from a function call now in- cludes calls made through pointer to functions. [C] ’inline’ may not be applied to function ’main’. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 3236 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. inline function ’%s’ is being defined with external linkage. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 3240 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 107 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description inline function ’%s’ is also an ’external definition’. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 3243 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. [C] ’inline’ may only be used in the declaration of a function identifier. Ticket(s): 24801 New messages 3241 to warn when inline function declarations 3244 are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. Typedef defined with more than 2 levels of indirection. Ticket(s): 3260 24849 Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. Member of struct/union defined with more than 2 levels of indirection. Ticket(s): 3261 24849 Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. Object defined or declared with more than 2 levels of indirection. Ticket(s): 3262 24849 Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. Function defined or declared with a return type which has more than 2 levels of indirection. Ticket(s): 3263 24849 Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. Wraparound past zero in unsigned subtraction of constant operands. Ticket(s): 3302 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 108 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Wraparound past zero in unsigned addition of constant operands. Ticket(s): 3303 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. Wraparound past zero in unsigned multiplication of constant operands. Ticket(s): 3304 24825 Messages relating to constant wraparound are no longer gen- erated in unevaluated contexts. This change does not apply to overflow messages. This ’goto’ statement involves a backward jump. Ticket(s): 24843 New messages 0772 and 0773 to warn when a loop has multiple 3310 exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. No definition has been found for structure/union tag ’%s’. Ticket(s): 3313 25896 QAC failed to return for code containing a braced initializer to an array of incomplete type. This controlling expression is an assignment. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3314 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. This controlling expression has a constant ’true’ value. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3323 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. This ’while’ or ’for’ loop controlling expression has a constant ’false’ value. Ticket(s): 3325 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 109 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description This ’if’ controlling expression has a constant ’false’ value. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3329 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Floating point variable used as ’while’ loop control variable. Ticket(s): 3339 24838 New message 3350 to highlight when a while loop is controlled by a floating-point comparison. Floating point variable used as ’for’ loop control variable. Ticket(s): 3340 24838 New message 3350 to highlight when a while loop is controlled by a floating-point comparison. Controlling expression of ’for’ loop is a floating point comparison. Ticket(s): 3342 24838 New message 3350 to highlight when a while loop is controlled by a floating-point comparison. Logical NOT being performed on one operand of a comparison. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3343 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Statement contains more than one access to objects that are volatile. Ticket(s): 3345 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. The controlling expression in this ’if’ statement has a constant ’true’ value. Ticket(s): 3346 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 110 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Possible precedence confusion: extra parentheses are recommended here. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control 3401 variable is a pointer. 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. String literal compared using a relational or equality operator. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3407 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Macro parameter not enclosed in (). Ticket(s): 3410 24715 New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C func- tion. Right hand operand of ’&&’ or ’||’ is an expression with persistent side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3415 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. 24836 False positives for messages 3415, 3416, 3421 and 3446 when an expression calls a function with no persistent side effect. Logical operation performed on expression with persistent side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- ognize loop control variables that are members of aggregates, 3416 and remove false positives and negatives when the loop control variable is a pointer. 24836 False positives for messages 3415, 3416, 3421 and 3446 when an expression calls a function with no persistent side effect. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 111 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description Initialization expression of ’for’ statement has no side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3419 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Increment expression of ’for’ statement has no side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3420 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Expression with persistent side effects is used in an initializer list. Ticket(s): 24835 New message 3387 to identify use of increment or decrement operator in an expression that has another side effect. Detection 3421 of volatile access has also been improved, in particular when involving addresses of volatile objects. 24836 False positives for messages 3415, 3416, 3421 and 3446 when an expression calls a function with no persistent side effect. Function call argument is an expression with possible side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3441 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Operator other than & (address-of) or = (assignment) applied to a volatile object. Ticket(s): 3442 25282 Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. The 2nd or 3rd operand of this conditional operator is an expression with persistent side effects. Ticket(s): 10998 Rework of QAC’s loop control variable detection to correctly rec- 3446 ognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. 24836 False positives for messages 3415, 3416, 3421 and 3446 when an expression calls a function with no persistent side effect. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 112 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description ’register’ may be illegal on array and ’struct’ / ’union’ types in some compilers. Ticket(s): 3620 24801 New messages 3241 to warn when inline function declarations are implicitly static, and 3242 to warn when a plain inline func- tion declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. Unnamed zero-width bit-field declared with a signed type. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 3659 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. Unnamed bit-field defined with non-zero width. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 3663 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. Unnamed bit-field consisting of a single bit declared with a signed type. Ticket(s): 24745 Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields 3665 rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma-separated list of builtin types to accept as sup- ported for use in bitfield declarations, which will suppress mes- sage 0625 when those types are used to declare bitfields. The object addressed by the pointer parameter ’%s’ is not modified and so the pointer could be of type ’pointer to const’. Ticket(s): 3673 21553 New message 3677 to indicate when the element type of an array or pointer to array function parameter should be declared with const qualifier. Also fixed false negative 3673 on operations which involve multiple pointer dereferences. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 113 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description An expression which is the result of a ~ or << operation has not been cast to its essential type. Ticket(s): 4397 24843 New messages 0772 and 0773 to warn when a loop has multiple exits including ’goto’ and ’return’ statements; adjusted the loca- tions of 0769 and 0771 and other loop-control related messages for better consistency. A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to a wider signed type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4443 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to signed type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4446 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A constant expression of ’essentially unsigned’ type (%1s) is being con- verted to signed type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4447 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially signed’ type (%1s) is being converted to narrower signed type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4460 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 114 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to narrower unsigned type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4461 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially floating’ type (%1s) is being converted to narrower floating type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4462 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A constant expression of ’essentially signed’ type (%1s) is being con- verted to narrower signed type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4463 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A constant expression of ’essentially unsigned’ type (%1s) is being con- verted to narrower unsigned type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4464 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A constant expression of ’essentially floating’ type (%1s) is being con- verted to narrower floating type, ’%2s’ on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4465 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 115 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description A non-constant expression of ’essentially signed’ type (%1s) is being passed to a function parameter of wider signed type, ’%2s’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4470 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially unsigned’ type (%1s) is being passed to a function parameter of wider unsigned type, ’%2s’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4471 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially floating’ type (%1s) is being passed to a function parameter of wider floating type, ’%2s’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4472 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially signed’ type (%1s) is being returned from a function defined with a wider signed return type, ’%2s’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4480 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A non-constant expression of ’essentially unsigned’ type (%1s) is be- ing returned from a function defined with a wider unsigned return type, ’%2s’. Ticket(s): 4481 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 116 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description A non-constant expression of ’essentially floating’ type (%1s) is being returned from a function defined with a wider floating return type, ’%2s’. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4482 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A composite expression of ’essentially signed’ type (%1s) is being con- verted to wider signed type, ’%2s’ on assignment. Ticket(s): 4490 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. A composite expression of ’essentially unsigned’ type (%1s) is being converted to wider unsigned type, ’%2s’ on assignment. Ticket(s): 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered 4491 a composite expression. 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. A composite expression of ’essentially floating’ type (%1s) is being con- verted to wider floating type, ’%2s’ on assignment. Ticket(s): 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered 4492 a composite expression. 24875 Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 117 Programming Research Ltd.

Table 3.4 – continued from previous page Msg. Id. Description An expression which is the result of a ~ or << operation has been con- verted to a different essential type category on assignment. Ticket(s): 24875 Certain messages that apply to initializer expressions will be 4498 generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their locations improved as part of a general mes- sage location improvement across QAC. An expression which is the result of a ~ or << operation has been con- verted to a wider essential type on assignment. Ticket(s): 4499 24809 If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression.

3.2.3 Message Text Changes

The following table summarizes message text changes.

Table 3.5: Changed Message Text for QA·C 9.4.0

Msg. Message Text Change Ticket Id. 9.4.0 [I] Bit-field %s in %s has not been declared explicitly as unsigned or signed. 0634 24745 9.3.1 [I] Bit-fields in this struct/union have not been declared explicitly as unsigned or signed. 9.4.0 [E] Bit-field %s in %s has been declared with a type not explicitly supported. 0635 24745 9.3.1 [E] Bit-fields in this struct/union have been declared with types other than int, signed int, unsigned int or _Bool. 9.4.0 Macro argument ’%s’ is both expanded as a macro and used with the ’%s’ operator. 0893 24856 9.3.1 Macro parameter ’%s’ is inconsistently subject to macro replacement. 9.4.0 Indentation of this line is to the left of the current block 2200 indentation level. 21598 9.3.1 Indentation of this line is to the left of the line above. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 118 Programming Research Ltd.

Table 3.5 – continued from previous page Msg. Message Text Change Ticket Id. 9.4.0 Call to ’%s’ is not immediately preceded by the zero-ing of ’errno’. 2500 24803 9.3.1 Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. 9.4.0 Zero-ing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. 2502 24803 9.3.1 Zeroing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. 9.4.0 Subtraction of a pointer to an array and a pointer to a non-array. 25305 2668 9.3.1 Subtraction of a pointer to an array and a pointer to a 25655 non array. 9.4.0 Comparison of a pointer to an array and a pointer to a non-array. 25305 2669 9.3.1 Comparison of a pointer to an array and a pointer to a 25655 non array. 9.4.0 Constant: Non-null terminated string used in a string function. 25305 2835 9.3.1 Constant: Non null terminated string used in a string 25655 function. 9.4.0 Definite: Non-null terminated string used in a string function. 25305 2836 9.3.1 Definite: Non null terminated string used in a string 25655 function. 9.4.0 Possible: Non-null terminated string used in a string function. 25305 2839 9.3.1 Possible: Non null terminated string used in a string 25655 function. 9.4.0 Constant: Maximum number of characters to be read- /written is larger than the target buffer size. 25305 2845 9.3.1 Constant: Maximum number of characters to be written 25655 is larger than the target buffer size. 9.4.0 Definite: Maximum number of characters to be read- /written is larger than the target buffer size. 25305 2846 9.3.1 Definite: Maximum number of characters to be written 25655 is larger than the target buffer size. 9.4.0 Apparent: Maximum number of characters to be read- /written is larger than the target buffer size. 25305 2847 9.3.1 Apparent: Maximum number of characters to be written 25655 is larger than the target buffer size. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 119 Programming Research Ltd.

Table 3.5 – continued from previous page Msg. Message Text Change Ticket Id. 9.4.0 Suspicious: Maximum number of characters to be read- /written is larger than the target buffer size. 25305 2848 9.3.1 Suspicious: Maximum number of characters to be writ- 25655 ten is larger than the target buffer size. 9.4.0 Possible: Maximum number of characters to be read- /written is larger than the target buffer size. 25305 2849 9.3.1 Possible: Maximum number of characters to be written 25655 is larger than the target buffer size. 9.4.0 Right hand operand of ’&&’ or ’||’ is an expression with persistent side effects. 10998 3415 9.3.1 Right hand operand of ’&&’ or ’||’ is an expression with 24836 possible side effects. 9.4.0 Logical operation performed on expression with persis- tent side effects. 10998 3416 9.3.1 Logical operation performed on expression with possi- 24836 ble side effects. 9.4.0 Expression with persistent side effects is used in an ini- tializer list. 24835 3421 9.3.1 Expression with possible side effects is used in an ini- 24836 tializer list. 9.4.0 The 2nd or 3rd operand of this conditional operator is an expression with persistent side effects. 10998 3446 9.3.1 The 2nd or 3rd operand of this conditional operator is 24836 an expression with possible side effects.

3.3 Messages for QA·C 9.3.1

3.3.1 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

RELEASE NOTES : QA·C 9.4.1 Page 120 Programming Research Ltd.

Table 3.6: Messages Modified for QA·C 9.3.1 Msg. Id. Description [S] Comment open at end of translation unit. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0268 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] The ’#’ operator may only appear before a macro parameter. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0803 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] Macro parameter ’%s’ is not unique. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0804 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [S] Closing quote or bracket ’>’ missing from include filename. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0817 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] ’#include’ does not identify a header or source file that can be pro- cessed. Ticket(s): 25503 The severity level of the following messages is restored to the 0821 level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 121 Programming Research Ltd.

Table 3.6 – continued from previous page Msg. Id. Description [S] ’#define’ must be followed by an identifier. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0846 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] Unable to find the ’)’ that marks the end of the macro call. Ticket(s): 25503 The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0852 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [U] Use of ’defined’ must match either ’defined(identifier)’ or ’defined identifier’. Ticket(s): 25503 The severity level of the following messages is restored to the 0887 level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro. Ticket(s): 25503 The severity level of the following messages is restored to the 1033 level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0887, 1033. Message 0852 is recategorized from constraint er- ror to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, ex- cept for messages 0852 and 3104. [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of structure member ’%3s’. 1061 Ticket(s): 25461 QAC no longer fails when issuing message 1061 for unnamed struct and members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 122 Programming Research Ltd.

Table 3.6 – continued from previous page Msg. Id. Description Definite: Writing to a file opened for reading. Ticket(s): 2686 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Apparent: Writing to a file opened for reading. Ticket(s): 2687 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Suspicious: Writing to a file opened for reading. Ticket(s): 2688 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Definite: The same file will be open with write access and another mode. 2691 Ticket(s): 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Apparent: The same file will be open with write access and another mode. 2692 Ticket(s): 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Suspicious: The same file will be open with write access and another mode. 2693 Ticket(s): 25312 QAC no longer fails for translation units that call ’fopen’ or ’fre- open’ where the return type is not used. Definite: Allocated memory is not deallocated. Ticket(s): 2706 25154 QAC no longer fails during analysis of complex resource usage, whilst also addressing false positives where resources may be released through calls to external functions. Apparent: Allocated memory is not deallocated. Ticket(s): 2707 25154 QAC no longer fails during analysis of complex resource usage, whilst also addressing false positives where resources may be released through calls to external functions. Suspicious: Allocated memory is not deallocated. Ticket(s): 2708 25154 QAC no longer fails during analysis of complex resource usage, whilst also addressing false positives where resources may be released through calls to external functions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 123 Programming Research Ltd.

Table 3.6 – continued from previous page Msg. Id. Description Definite: Using value of uninitialized automatic object ’%s’. Ticket(s): 2961 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Apparent: Using value of uninitialized automatic object ’%s’. Ticket(s): 2962 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Suspicious: Using value of uninitialized automatic object ’%s’. Ticket(s): 2963 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Definite: Some members of object ’%s’ are uninitialized. Ticket(s): 2966 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Apparent: Some members of object ’%s’ are uninitialized. Ticket(s): 2967 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Suspicious: Some members of object ’%s’ are uninitialized. Ticket(s): 2968 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Definite: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. 2971 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Apparent: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. 2972 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Suspicious: Passing address of uninitialized object ’%s’ to a function parameter declared as a pointer to const. 2973 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 124 Programming Research Ltd.

Table 3.6 – continued from previous page Msg. Id. Description Definite: Passing address of partially initialized object ’%s’ to a function parameter declared as a pointer to const. 2976 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Apparent: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. 2977 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops. Suspicious: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. 2978 Ticket(s): 25452 QAC no longer fails when checking loop variables for use before initialization in infinite loops.

3.4 Messages for QA·C 9.3.0

3.4.1 New Messages

The following table lists messages which are new in QA·C 9.3.0.

Table 3.7: Messages Added for QA·C 9.3.0

Msg. Id. Description [u] Cast between a pointer to incomplete type and a floating type. Ticket(s): 0323 24839 QAC will generate new messages 0323 and 0324 to report cast between pointer to incomplete type and a type. Messages 0301 and 0306 will no longer be generated for casts mentioned above. [u] Cast between a pointer to incomplete type and an integral type. Ticket(s): 0324 24839 QAC will generate new messages 0323 and 0324 to report cast between pointer to incomplete type and a type. Messages 0301 and 0306 will no longer be generated for casts mentioned above. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 125 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description [u] Cast between a pointer to incomplete type and a pointer to function. Ticket(s): 24853 QAC will generate message 0325 to report cast between pointer 0325 to a function and a pointer to incomplete type, or vice a versa. Message 0307 will no longer be generated under circumstances described above. [I] Cast between a pointer to void and an integral type. Ticket(s): 23603 QAC will no longer generate messagess 0301, 0303 and 0306 0326 when pointer to void is involved. QAC will generate messages 0326 and 0327 to identify casting between pointer to void and arithmetic type. [I] Cast between a pointer to void and an floating type. Ticket(s): 23603 QAC will no longer generate messagess 0301, 0303 and 0306 0327 when pointer to void is involved. QAC will generate messages 0326 and 0327 to identify casting between pointer to void and arithmetic type. [u] Cast between a pointer to object and an essential type other than signed/unsigned. Ticket(s): 0328 25048 QAC will generate message 0328 to identify casts between pointer to object and an essential type other than signed/un- signed. More than one read access to volatile objects between sequence points. Ticket(s): 0404 22583 QAC will generate new messages to identify situations when there is more than one read or more than one write to a volatile type between sequence points. More than one modification of volatile objects between sequence points. Ticket(s): 0405 22583 QAC will generate new messages to identify situations when there is more than one read or more than one write to a volatile type between sequence points. [U] The macro identifier ’%s’ is reserved. Ticket(s): 0603 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 126 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description [L] Size of object ’%s’ exceeds 65535 bytes - program does not conform strictly to ISO:C99. Ticket(s): 0613 23418 A new message 0613 will be generated when the C99 trans- lation limit ’65535 bytes in an object (in a hosted environment only)’ is exceeded. [L] More than 511 block scope identifiers defined within a block - pro- gram does not conform strictly to ISO:C99. Ticket(s): 0615 23574 A new message 0615 will be generated when the C99 transla- tion limit ’511 identifiers with block scope declared in one block’ is exceeded. Casting to char pointer type. Ticket(s): 0751 21205 New message 751 has been added, to handle casts to char pointers, for which 310 won’t be generated anymore. [U] Macro identifier does not differ from other macro identifier(s) (e.g. ’%s’) within the specified number of significant characters. Ticket(s): 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0791 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 127 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description [L] Macro identifier matches other macro identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. Ticket(s): 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0792 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 128 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description [L] Macro identifier matches other macro identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. Ticket(s): 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0793 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C90 limit of 31 significant characters. Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report 0794 identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- nificant characters. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the specified number of significant characters. Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report 0795 identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- nificant characters. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 129 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C99 limit of 63 significant characters Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report 0796 identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- nificant characters. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. [E] Extra tokens at end of #. Ticket(s): 0840 24724 QAC will generate new message 840 in case of #include direc- tive followed by extra tokens. The result of library function ’%s’ might be modified. Ticket(s): 24146 QAC will generate message 1493 whenever result of localeconv, 1494 getenv, setlocale or strerror is implicitly assigned to a pointer to a modifiable object. QAC will generate message 1494 when- erver result of localeconv, getenv, setlocale or strerror might have been modified via a pointer. This ’default’ label is neither the first nor the last label within the ’switch’ block. 2012 Ticket(s): 14126 New message to highlight where the default label of a switch statement is not the first or last label This ’if .. else if ’ construct ’else’ statement is empty. Ticket(s): 2013 24467 QAC will generate message 2013 for empty else statement in ’if .. else if’ constructs. This ’switch’ statement ’default’ clause is empty and contains com- ments. 2014 Ticket(s): 24296 Message 2016 has been split to distinguish switch default blocks that are empty with a comment from those without comments. Implicit conversion from plain char to wider signed integer type. Ticket(s): 2140 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 130 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Implicit conversion from plain char to wider unsigned integer type. Ticket(s): 2141 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from plain char to floating type. Ticket(s): 2142 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from plain char to enum type. Ticket(s): 2143 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from signed char to wider signed integer type. Ticket(s): 2144 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from signed char to wider unsigned integer type. Ticket(s): 2145 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from signed char to floating type. Ticket(s): 2146 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Implicit conversion from signed char to enum type. Ticket(s): 2147 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from plain char to wider signed integer type. Ticket(s): 2148 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 131 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Explicit conversion from plain char to wider unsigned integer type. Ticket(s): 2149 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from plain char to floating type. Ticket(s): 2150 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from plain char to enum type. Ticket(s): 2151 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from signed char to wider signed integer type. Ticket(s): 2152 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from signed char to wider unsigned integer type. Ticket(s): 2153 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from signed char to floating type. Ticket(s): 2154 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Explicit conversion from signed char to enum type. Ticket(s): 2155 24894 New messages 2140-2155 will be generated on implicit or ex- plicit conversion of plain or signed char to a type of potentially- higher rank Body of switch statement is not enclosed within braces. Ticket(s): 2218 24822 New messages 2218 and 2219 have been added, to handle the switch statements without braces, following the model of 2212 and 2214. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 132 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Body of switch statement is on the same line and is not enclosed within braces. Ticket(s): 2219 24822 New messages 2218 and 2219 have been added, to handle the switch statements without braces, following the model of 2212 and 2214. Subtraction of a pointer to an array and a pointer to a non array. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2668 2752. 24848 QAC will generate message 2668 or 2669 respectively where a pointer to an array is subtracted or compared to a pointer that does not refer to an array. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Comparison of a pointer to an array and a pointer to a non array. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2669 2752. 24848 QAC will generate message 2668 or 2669 respectively where a pointer to an array is subtracted or compared to a pointer that does not refer to an array. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 133 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Writing to a file opened for reading. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2686 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Writing to a file opened for reading. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2687 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Writing to a file opened for reading. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2688 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 134 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: The same file will be open with write access and another mode. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2691 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: The same file will be open with write access and another mode. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2692 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: The same file will be open with write access and another mode. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2693 rameters has been improved to stop the generation of message 2752. 24436 New analysis to identify an attempt to write to a FILE that was opened for reading. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 135 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Attempt to access a file which has been closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2696 rameters has been improved to stop the generation of message 2752. 24439 New analysis to detect usage of a FILE pointer after the stream has been closed 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Attempt to access a file which has been closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2697 rameters has been improved to stop the generation of message 2752. 24439 New analysis to detect usage of a FILE pointer after the stream has been closed 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Attempt to access a file which has been closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2698 rameters has been improved to stop the generation of message 2752. 24439 New analysis to detect usage of a FILE pointer after the stream has been closed 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 136 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Opened file is not closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2701 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Opened file is not closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2702 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Opened file is not closed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2703 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 137 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Allocated memory is not deallocated. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2706 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Allocated memory is not deallocated. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2707 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Allocated memory is not deallocated. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2708 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 138 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Memory allocation and deallocation mismatch. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2711 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Memory allocation and deallocation mismatch. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2712 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Memory allocation and deallocation mismatch. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2713 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 139 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Memory deallocated multiple times. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2716 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Memory deallocated multiple times. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2717 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Memory deallocated multiple times. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2718 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 140 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Deallocation of non dynamic memory. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2721 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Deallocation of non dynamic memory. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2722 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Deallocation of non dynamic memory. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2723 rameters has been improved to stop the generation of message 2752. 24435 New analysis to detect use of ’free’ to memory that was not allo- cated dynamically 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 141 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Use of uninitialized resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2726 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Use of uninitialized resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2727 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Use of uninitialized resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2728 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 142 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Use of destroyed resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2731 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Use of destroyed resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2732 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Use of destroyed resource. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2733 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 143 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Created resource is not destroyed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2736 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Created resource is not destroyed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2737 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Created resource is not destroyed. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2738 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 144 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Definite: Use of uninitialized file handle. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2746 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Use of uninitialized file handle. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2747 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Use of uninitialized file handle. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2748 rameters has been improved to stop the generation of message 2752. 24434 New analysis to detect resourecs, including memory and files, that are acquired but not released. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 145 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Constant: Using 0 as size parameter of a function call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2865 rameters has been improved to stop the generation of message 2752. 24782 New analysis to detect where the size argument of certain stan- dard library functions has value of 0. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Using 0 as size parameter of a function call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2866 rameters has been improved to stop the generation of message 2752. 24782 New analysis to detect where the size argument of certain stan- dard library functions has value of 0. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Using 0 as size parameter of a function call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2867 rameters has been improved to stop the generation of message 2752. 24782 New analysis to detect where the size argument of certain stan- dard library functions has value of 0. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 146 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Suspicious: Using 0 as size parameter of a function call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2868 rameters has been improved to stop the generation of message 2752. 24782 New analysis to detect where the size argument of certain stan- dard library functions has value of 0. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Using 0 as size parameter of a function call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2869 rameters has been improved to stop the generation of message 2752. 24782 New analysis to detect where the size argument of certain stan- dard library functions has value of 0. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This function call produces no side effects and is redundant. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23544 New message 2987 to highlight a function call that is redundant 2987 and so can be removed. 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 147 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description The first operand of this conditional operator is always ’true’. Ticket(s): 14489 New messages to identify use of an invariant expression as the first operand of a conditional operator 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow 2997 messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The first operand of this conditional operator is always ’false’. Ticket(s): 14489 New messages to identify use of an invariant expression as the first operand of a conditional operator 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow 2998 messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This function contains a mixture of in-line assembler statements and C code. 3008 Ticket(s): 24667 Message 3006 will recognize encapsulation of assembly in macros, supported by new message 3008 Floating point variable used as ’while’ loop control variable. Ticket(s): 3339 13417 QAC will recognize control variable of floating type in while loops. QAC will generate message 2463 if variable is increased in for loop third expression along loop control variable. Cannot identify wraparound guard for unsigned arithmetic expression. Ticket(s): 3383 24890 QAC will generate new messages 3383,3384,3385,3386 when it is unable to detect an unsigned arithmetic wraparound guard continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 148 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Cannot identify wraparound guard for dependent unsigned arithmetic expression. 3384 Ticket(s): 24890 QAC will generate new messages 3383,3384,3385,3386 when it is unable to detect an unsigned arithmetic wraparound guard Cannot identify wraparound guard for sizeof-VLA expression. Ticket(s): 3385 24890 QAC will generate new messages 3383,3384,3385,3386 when it is unable to detect an unsigned arithmetic wraparound guard Cannot identify wraparound guard for dependent sizeof-VLA expres- sion. 3386 Ticket(s): 24890 QAC will generate new messages 3383,3384,3385,3386 when it is unable to detect an unsigned arithmetic wraparound guard Simple macro argument expression is not parenthesized. Ticket(s): 3432 24771 QAC will generate message 3432 for simple (precedence-safe) arguments to macros if they are not parenthesized Multiple declarations of external object or function. Ticket(s): 3449 24886 QAC will generate message 3449 to warn about multiple exter- nal declarations ofa same variable or function. Argument to macro ’%s’ appears to contain a side effect, but it is not used. Ticket(s): 3462 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Argument to macro ’%s’ contains a side effect that will not be evaluated at runtime. Ticket(s): 3463 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 149 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description Argument to macro ’%s’ contains a side effect that will be evaluated more than once. Ticket(s): 3464 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Argument to macro ’%s’ contains a side effect that might not be evalu- ated at runtime. Ticket(s): 3465 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Variable argument list to macro ’%s’ appears to contain an expression with side effects. Ticket(s): 3466 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Variable argument list to macro ’%s’ appears to contain an expression with side effects that will be used more than once. Ticket(s): 3467 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized The name of this macro is a reserved identifier in C90 and a keyword in C99. Ticket(s): 3468 25051 New message 3468 added to highlight C90 reserved identifiers that are now keywords in C99. Note: _Bool will now generate 3468 and not 3439. The first operand of this conditional operator is always constant ’true’. Ticket(s): 3493 14489 New messages to identify use of an invariant expression as the first operand of a conditional operator The first operand of this conditional operator is always constant ’false’. Ticket(s): 3494 14489 New messages to identify use of an invariant expression as the first operand of a conditional operator continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 150 Programming Research Ltd.

Table 3.7 – continued from previous page Msg. Id. Description A composite expression of ’essentially char’ type (%1s) is being cast to a different type category, ’%2s’. Ticket(s): 4389 24830 QAC will generate message 4389 whenever a composite ex- pression of essentially character type has been cast to a dif- ferent essential type category.

3.4.2 Removed Messages

The following table lists messages which are removed in QA·C 9.3.0.

Table 3.8: Messages Removed for QA·C 9.3.0

Msg. Id. Description [S] Character constant contains a trigraph representation of a single backslash character. Ticket(s): 0251 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [S] String literal is not terminated. A trigraph has been used in the construction of an escape sequence. Ticket(s): 0257 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [C] Comment still open at end of included file. Ticket(s): 0261 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [S] Unexpected end of file. Ticket(s): 0269 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 151 Programming Research Ltd.

Table 3.8 – continued from previous page Msg. Id. Description [S] Comma missing in macro parameter list. Ticket(s): 0806 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [S] Identifier missing in macro parameter list. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0807 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [U] The ’#include’ preprocessing directive has not been followed by or "s-char-sequence". Ticket(s): 0809 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 152 Programming Research Ltd.

Table 3.8 – continued from previous page Msg. Id. Description [S] ’#undef’ must be followed by an identifier. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0847 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 [C] Fewer arguments in macro call than specified in definition. Ticket(s): 0856 25149 The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856

3.4.3 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

RELEASE NOTES : QA·C 9.4.1 Page 153 Programming Research Ltd.

Table 3.9: Messages Modified for QA·C 9.3.0 Msg. Id. Description [Q] The maximum number of errors set by -maxerr has been exceeded - the analysis has been aborted. Ticket(s): 0159 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. [U] Using unsupported conversion specifier number %s. 0160 Ticket(s): 24507 Removed dependency on the legacy configuration file ’qac.cfg’. [U] Using unsupported conversion specifier number %s. 0190 Ticket(s): 24507 Removed dependency on the legacy configuration file ’qac.cfg’. [S] Character constant contains an invalid hex escape sequence. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0231 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 154 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Value of hex escape sequence is not representable in type ’un- signed char’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0232 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [C] Value of octal escape sequence is not representable in type ’un- signed char’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0233 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 155 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Unknown escape sequence. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0235 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [E] This file contains the control-Z character - was this transferred from a PC? Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0241 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 156 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Value of character constant is not representable in type ’int’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0244 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 157 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Empty character constant. Ticket(s): 25140 Change status of messages 245, 249, and 259 to more accu- rately reflect standard (syntax error to undefined behavior). 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 0245 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 158 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Character constant contains a new-line character. Ticket(s): 25140 Change status of messages 245, 249, and 259 to more accu- rately reflect standard (syntax error to undefined behavior). 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0249 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Character constant contains a single backslash character. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0250 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 159 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] String literal is not terminated. A backslash character has been used to define an escape sequence. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0258 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 160 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] String literal is not terminated. Ticket(s): 25140 Change status of messages 245, 249, and 259 to more accu- rately reflect standard (syntax error to undefined behavior). 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 0259 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 161 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Comment open at end of translation unit. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0268 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. [I] Multiple character constants have implementation defined values. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0284 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 162 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [I] Character constant contains character which is not a member of the source character set. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0285 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [I] String literal contains character which is not a member of the basic source character set. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0286 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 163 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [I] Header name contains character which is not a member of the basic source character set. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0287 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [I] Source file ’%s’ has comments containing characters which are not members of the basic source character set. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0288 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [I] Source file ’%s’ has preprocessing tokens containing characters which are not members of the basic source character set. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0289 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 164 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [u] Cast between a pointer to object and a floating type. Ticket(s): 23603 QAC will no longer generate messagess 0301, 0303 and 0306 when pointer to void is involved. QAC will generate messages 0301 0326 and 0327 to identify casting between pointer to void and arithmetic type. 24839 QAC will generate new messages 0323 and 0324 to report cast between pointer to incomplete type and a type. Messages 0301 and 0306 will no longer be generated for casts mentioned above. [I] Cast between a pointer to volatile object and an integral type. Ticket(s): 23603 QAC will no longer generate messagess 0301, 0303 and 0306 0303 when pointer to void is involved. QAC will generate messages 0326 and 0327 to identify casting between pointer to void and arithmetic type. [I] Cast between a pointer to object and an integral type. Ticket(s): 23603 QAC will no longer generate messagess 0301, 0303 and 0306 when pointer to void is involved. QAC will generate messages 0306 0326 and 0327 to identify casting between pointer to void and arithmetic type. 24839 QAC will generate new messages 0323 and 0324 to report cast between pointer to incomplete type and a type. Messages 0301 and 0306 will no longer be generated for casts mentioned above. [u] Cast between a pointer to object and a pointer to function. Ticket(s): 24853 QAC will generate message 0325 to report cast between pointer 0307 to a function and a pointer to incomplete type, or vice a versa. Message 0307 will no longer be generated under circumstances described above. Casting to different object pointer type. Ticket(s): 0310 21205 New message 751 has been added, to handle casts to char pointers, for which 310 won’t be generated anymore. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 165 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] String literal has undefined value. This may be a result of using ’#’ on \\. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0337 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Octal constant used. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0339 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0372 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 166 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [L] Number of macro definitions exceeds 4095 - program does not con- form strictly to ISO:C99. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0380 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [L] ’#include "%s"’ causes nesting to exceed 15 levels - program does not conform strictly to ISO:C99. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0388 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [U] ’%s’ is modified more than once between sequence points - evalu- ation order unspecified. Ticket(s): 0400 22583 QAC will generate new messages to identify situations when there is more than one read or more than one write to a volatile type between sequence points. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 167 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] ’%s’ is modified and accessed between sequence points - evalua- tion order unspecified. Ticket(s): 0402 22583 QAC will generate new messages to identify situations when there is more than one read or more than one write to a volatile type between sequence points. [U] Right operand of shift operator is negative - this is undefined. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0500 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [U] Right operand of shift operator is too large - this is undefined. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0501 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 168 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description A right shift on signed data may be an arithmetic or a logical shift. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0502 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Translation unit contains no object or function definitions with external linkage. Ticket(s): 25094 QAC will generate message 0553 when it would previously have been obscured by declarations eliciting message 0709, 0625, or similar linkage constraint violations 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0553 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 This switch case label of ’essential type’ ’%1s’, is not consistent with a controlling expression of essential type ’%2s’. Ticket(s): 0570 23530 Message 0570 will no longer be generated for non negative con- stant exprsesions of signed type if the value can be represented in the target type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 169 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Constant is too large to be representable. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0580 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [U] The identifier ’%s’ is reserved for use by the library. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0602 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 170 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] A declaration must declare a tag or an identifier. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0605 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Structure has fewer initializers than its declared size. Default initializa- tion is applied to the remainder of the members. Ticket(s): 24302 Unnamed bitfields affect the padding between members but are 0703 not counted as members for initialization, QAC will no longer incorrectly consider them for initialization. 25088 QAC will not count unnamed bitfields when generating message 0703. Switch expression is of essentially Boolean type. Ticket(s): 0735 25080 QAC will generate message 0735 whenever switch expression is of essentially Boolean type. [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- 0778 nificant characters. 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 171 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- 0779 nificant characters. 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. Identifier ’%s’ is also used as a macro name. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0784 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Identifier matches other macro name(s) (e.g. ’%s’) in first 31 characters. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0785 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 172 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Identifier matches other macro name(s) (e.g. ’%s’) in first 63 characters. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0786 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Identifier does not differ from other macro name(s) (e.g. ’%s’) within the specified number of significant characters. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0787 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 173 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This identifier, ’%s’, is used as both a macro name and a function-like macro parameter name. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0788 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. Ticket(s): 23823 New messages 0794, 0795 and 0796 will be generated to report identifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of sig- 0789 nificant characters. 24326 New messages 0791, 0792 and 0793 will be generated instead of, respectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. 24855 QAC will take into account function parameter names when gen- erating messages 0778, 0779, 0789, 0794, 0795, 0796. [C] The ’#’ operator may only appear before a macro parameter. Ticket(s): 25160 The following messages have had their severity level increased: 0803 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 174 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Macro parameter ’%s’ is not unique. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 0804 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 175 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Invalid identifier encountered in macro parameter list. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0805 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [Q] ’#include "%s"’ causes itself to be included recursively. QA·C ter- minates execution after 8 occurrences. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0808 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 176 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [L] ’#include "%s"’ causes nesting to exceed 8 levels - program does not conform strictly to ISO:C90. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0810 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [C] The glue operator ’##’ may only appear in a ’#define’ preprocessing directive. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0811 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 177 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Header name token ’’ found outside ’#include’ preprocessing directive. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0812 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [U] Using any of the characters ’ " or /* in ’#include <%s>’ gives unde- fined behaviour. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0813 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 178 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Using the characters ’ or /* in ’#include "%s"’ gives undefined be- haviour. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 0814 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 179 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [L] #include <...> file name does not conform strictly to ISO:C90. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0815 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [L] #include "..." file name does not conform strictly to ISO:C90. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0816 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Closing quote or bracket ’>’ missing from include filename. Ticket(s): 25160 The following messages have had their severity level increased: 0817 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 180 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [Q] Cannot find ’%s’ - Perhaps the appropriate search path was not given ? Ticket(s): 24724 QAC will generate new message 840 in case of #include direc- tive followed by extra tokens. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 0818 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 181 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] ’#include’ does not identify a header or source file that can be pro- cessed. Ticket(s): 24724 QAC will generate new message 840 in case of #include direc- tive followed by extra tokens. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 0821 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 182 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [Q] Cannot find forceinclude file ’%s’. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0822 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [S] Unexpected ’#else’ or ’#elif’ directive follows ’#else’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0823 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 183 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Unexpected ’#else’ or ’#elif’ directive found outside a ’#if’ block. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0824 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Unexpected ’:’ found without a preceding ’?’ in a ’#if’ or ’#elif’ ex- pression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0826 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 184 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Missing ’:’ after ’?’ in a ’#if’ or ’#elif’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0827 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [L] More than 8 levels of nested conditional inclusion - program does not conform strictly to ISO:C90. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0828 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 185 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Could not find ’#endif’ preprocessing directive to close ’#if...’. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0829 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [E] Unrecognized text encountered after a preprocessing directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0830 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 186 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [E] Use of ’\\’ in this ’#include’ line is a PC extension - this usage is non-portable. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0831 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro substitution in #include preprocessing directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0832 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 187 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] ’#ifdef’ or ’#ifndef’ must be followed by an identifier. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0833 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [U] Definition of macro named ’defined’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0836 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 188 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Use of ’#undef’ to remove the operator ’defined’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0837 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 File ’%1s’ has already been included directly from within file ’%2s’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0838 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 189 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Using ’#undef’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0841 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 190 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Using #define or #undef inside a function. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0842 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 191 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description / character used in an include file name. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0843 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 192 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] ’#define’ must be followed by an identifier. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 0846 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 193 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Attempting to #undef ’%s’, which is a predefined macro name. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0848 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Preprocessing directive appears in the middle of a line. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- 0849 ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 194 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C99] Macro argument is empty. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, 0850 fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 195 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] More arguments in macro call than specified in definition. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0851 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [C] Unable to find the ’)’ that marks the end of the macro call. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 196 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 0853 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 197 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Attempting to #define ’%s’, which is a predefined macro name. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0854 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Preprocessing results in a sequence of tokens that has the form of a preprocessing directive. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0855 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 198 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [L] Number of macro definitions exceeds 1024 - program does not con- form strictly to ISO:C90. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 0857 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 This #include <%s> directive is redundant. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0861 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 199 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This #include "%s" directive is redundant. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0862 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 An absolute path has been specified in a #include statement. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [Q] ’#error’ directive: %s Analysis terminated due to ’#error’ directive. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0869 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 200 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Result of ’##’ operator is not a legal preprocessing token. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0872 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 201 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] Preprocessing token cannot be converted to an actual token. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 0873 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 202 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C] ’#if’ and ’#elif’ expressions may contain only integral constants. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0877 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Illegal operator in ’#if’ or ’#elif’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0879 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 203 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Using # and ## operators in the same macro definition. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0880 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Using multiple ## operators in the same macro definition. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0881 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 204 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Include file code is not protected against repeated inclusion Ticket(s): 24688 Message 0883 will be generated for files where there is no code to protect. #elif and #else are no longer considered part of a valid include guard. 24975 Message 0883 is now generated once per include per translation unit. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0883 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Using multiple # operators in the same macro definition. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0884 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 205 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] The token ’defined’ is generated in the expansion of this macro. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0885 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] Missing or invalid expression in ’#if’ or ’#elif’ directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0886 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 206 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Use of ’defined’ must match either ’defined(identifier)’ or ’defined identifier’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. [U] ’defined’ requires an identifier as an argument. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0888 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 207 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description #undef refers to a macro that has previously been #undef’d. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0889 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 208 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description ’#%s’ directive controlling expression does not evaluate to zero or one. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0894 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 209 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Missing operand in ’#if’ or ’#elif’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0896 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 210 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Missing operator in ’#if’ or ’#elif’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0897 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 211 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Unexpected ’)’ or ’:’ in ’#if’ or ’#elif’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 0898 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 212 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension. Ticket(s): 25143 Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ig- nore 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 0899 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 213 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] Source file does not end with a newline character. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0914 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [S] Unable to recover from syntax errors in this source file. Ticket(s): 0917 24724 QAC will generate new message 840 in case of #include direc- tive followed by extra tokens. [S] Unexpected end of file. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0925 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [C99] Operand of sizeof is an expression of variable length array type with side effects. 0945 Ticket(s): 24460 QAC will generate message 0945 only if expression, used as an operand of sizeof operator, has side effects. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 214 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [E] ’#include %s’ is a VMS extension. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1001 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [E] ’%s’ is not a legal identifier in ISO C. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 1002 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 215 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] End-of-file encountered when expecting ’#endif’ preprocessing di- rective. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 1005 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. [E] This in-line assembler construct is a language extension. The code has been ignored. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 1006 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 216 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] Unrecognizable expression in ’#if’ preprocessing directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1009 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] ’#%s’ is not a valid form of ’#if’ syntax . Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1010 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 217 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C99] Use of ’//’ comment. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 1011 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [E] Use of the sizeof operator in a preprocessing directive is a language extension. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 1028 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 218 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [C99] Macro defined with variable argument list. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1030 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 1033 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 219 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [E] No macro arguments supplied for variable argument list. This is a language extension. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 1035 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 [C99] Union member is a struct declared with a flexible array member. Ticket(s): 1067 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. [E] Union member is a struct declared with a potentially-flexible array member. Ticket(s): 1068 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 220 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suffixed integer constant causes implicit conversion of other operand. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1251 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Suffixed integer constant implicitly converted to different integer type. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1252 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 221 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unsuffixed integer constant implicitly converted to different integer type. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1253 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Suffix is not consistent with a type of unsigned long. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1254 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 222 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unsuffixed integer constant is not of type int. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1255 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Redundant leading zeroes on a numeric constant. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1272 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 223 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Hex constant does not include a "U" suffix. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1277 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Decimal constant includes a suffix. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1278 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 224 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Hex constant includes an "L" suffix. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 1279 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Integer literal constant is of an unsigned type but does not include a "U" suffix. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 1281 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Value of constant expression is not in the enum type to which it is being converted. 1317 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 225 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Object of enum type is being modified with a compound assignment operator. 1318 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. Array element ’%s’ has already been initialized. Ticket(s): 24451 Support for designated initialization of union member other than 1397 the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. Structure member ’%s’ has already been initialized. Ticket(s): 23605 The text of message 1398 will refer to the name of the structure member that has already been initialised, instead of its zero- based position within the structure. 1398 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. A union member has already been initialized. Ticket(s): 24451 Support for designated initialization of union member other than 1399 the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. Enum object is being compared with a constant, non-enum expression using an equality operator. 1410 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. A constant expression of non-enum type is being assigned to an object of enum type. 1412 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 226 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Object of enum type is being implicitly compared against zero in a con- trolling expression. 1477 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. The result of library function ’%s’ is used as a pointer to a modifiable object. Ticket(s): 24146 QAC will generate message 1493 whenever result of localeconv, 1493 getenv, setlocale or strerror is implicitly assigned to a pointer to a modifiable object. QAC will generate message 1494 when- erver result of localeconv, getenv, setlocale or strerror might have been modified via a pointer. Destination and source objects have incompatible types. Ticket(s): 1495 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. Destination and source objects may have incompatible types. Ticket(s): 1496 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. Ticket(s): 1820 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation. Ticket(s): 1821 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 227 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation. Ticket(s): 1822 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation. Ticket(s): 1823 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation. Ticket(s): 1824 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this arithmetic operation. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1850 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 228 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this bitwise operation. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1851 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this relational operation. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1852 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this equality operation. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this conditional operation. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1854 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The operands of this relational operator are expressions of different ’essential type’ categories (%1s and %2s). Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1880 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 229 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The operands of this equality operator are expressions of different ’es- sential type’ categories (%1s and %2s). Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. 1881 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. The 2nd and 3rd operands of this conditional operator are expressions of different ’essential type’ categories (%1s and %2s). Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1882 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. This ’switch’ statement ’default’ clause is empty. Ticket(s): 2016 24296 Message 2016 has been split to distinguish switch default blocks that are empty with a comment from those without comments. Integral promotion : _Bool promoted to signed int. Ticket(s): 2109 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. ’%s’ is not aligned with the previously declared identifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 2211 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 230 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Line length exceeds %s characters. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 2217 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 The variable incremented in the third expression of this ’for’ statement is not the variable identified as the ’loop control variable’ (%s). Ticket(s): 2463 13417 QAC will recognize control variable of floating type in while loops. QAC will generate message 2463 if variable is increased in for loop third expression along loop control variable. Loop control variable, %s, modified twice in for-loop header. Ticket(s): 2464 13417 QAC will recognize control variable of floating type in while loops. QAC will generate message 2463 if variable is increased in for loop third expression along loop control variable. Call to ’%s’ is not immediately followed by the testing of ’errno’. Ticket(s): 24211 Messages 2501 and 2502 will be generated even if the expected statement is not encountered because the end of the translation unit is reached. Messages 2501 will not be generated when the 2501 return value of an errno setting function can be used to deter- mine if an error has occured. 24877 Messages 2501 will not be generated when the return value of an errno setting function is used to determine if an error has occurred. Zeroing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. Ticket(s): 24211 Messages 2501 and 2502 will be generated even if the expected 2502 statement is not encountered because the end of the translation unit is reached. Messages 2501 will not be generated when the return value of an errno setting function can be used to deter- mine if an error has occured. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 231 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: The value being compared with macro EOF does not originate from an EOF returning function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2671 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: The value being compared with macro EOF does not origi- nate from an EOF returning function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2674 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 232 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2676 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2678 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Using an invalidated value ’%s’ returned from a Standard Li- brary function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2681 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 233 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2682 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2683 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This loop controlling expression is a constant expression and its value is ’true’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2740 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 234 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This ’if’ controlling expression is a constant expression and its value is ’true’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2741 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This ’if’ controlling expression is a constant expression and its value is ’false’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2742 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This ’do - while’ loop controlling expression is a constant expression and its value is ’false’. The loop will only be executed once. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2743 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 235 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This ’while’ or ’for’ loop controlling expression is a constant expression and its value is ’false’. The loop will not be entered. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2744 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Internal dataflow problem. Dataflow analysis continues with the next function. Please inform Programming Research. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2750 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This function is too complex. Dataflow analysis continues with the next function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2751 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 236 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This ’%1s’ results in the function being too complex. Dataflow analysis continues with the next function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2752 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. As a result of error message ’%s’, dataflow analysis of the remainder of this function is not possible. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- 2753 rameters has been improved to stop the generation of message 2752. 24906 Messages 3238 and 3237 won’t cancel dataflow analysis any- more (message 2753 won’t be generated subsequently to these two ones). 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. As a result of error message ’%s’, dataflow analysis of the remainder of this translation unit is not possible. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2754 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 237 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Analysis time of function ’%1s’ has exceeded the configured maximum: ’%2sms’. Dataflow analysis continues with the next function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2755 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Could not expand function call to ’%1s’ with maximum ’-po df::inter’ value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2756 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Could not analyze function ’%1s’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2757 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 238 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis continues with the next query. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2758 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Subtracting pointers that address different objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2761 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Subtracting pointers that address different objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2763 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 239 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Subtracting pointers that address different members of the same object. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2766 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Subtracting pointers that address different members of the same object. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2767 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Subtracting pointers that address different members of the same object. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2768 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 240 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Comparing pointers that address different objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2771 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Comparing pointers that address different objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2772 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Comparing pointers that address different objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2773 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 241 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Copy between overlapping objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 24309 Messages 2777, 2778 and 2779 are now generated for assign- 2776 ment involving an element of an array that is a union member, and another overlapping member of the same union. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Copy between overlapping objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2777 2752. 24309 Messages 2777, 2778 and 2779 are now generated for assign- ment involving an element of an array that is a union member, and another overlapping member of the same union. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 242 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Copy between overlapping objects. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2778 2752. 24309 Messages 2777, 2778 and 2779 are now generated for assign- ment involving an element of an array that is a union member, and another overlapping member of the same union. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2781 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2782 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 243 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Function argument has fewer elements than the array di- mension in the parameter declaration for non-inlined call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2783 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2784 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2785 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 244 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2786 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2789 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Right hand operand of shift operator is negative or too large. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2790 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 245 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Right hand operand of shift operator is negative or too large. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2791 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Right hand operand of shift operator is negative or too large. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2792 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Right hand operand of shift operator is negative or too large. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2793 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 246 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Calling a standard library character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2796 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Calling a standard library character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2797 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Calling a standard library character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2798 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 247 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Possible: Calling a standard library character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2799 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Overflow in signed arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2800 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Overflow in signed arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2801 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 248 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Overflow in signed arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2802 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Overflow in signed arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2803 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2806 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 249 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2807 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2808 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2809 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 250 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Dereference of NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2810 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Dereference of NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2811 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Dereference of NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2812 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 251 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Dereference of NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2813 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Dereference of NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2814 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Calling a standard library character input/output function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2816 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 252 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Calling a standard library character input/output function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2817 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Calling a standard library character input/output function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2818 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Calling a standard library character input/output function with an invalid character value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2819 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 253 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Arithmetic operation on NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2820 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Arithmetic operation on NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2821 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Arithmetic operation on NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2822 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 254 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Arithmetic operation on NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2823 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Arithmetic operation on NULL pointer. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2824 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 255 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Division by zero. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 2830 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 256 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Division by zero. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2831 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Division by zero. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2832 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Division by zero. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2833 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 257 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Possible: Division by zero. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2834 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Non null terminated string used in a string function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2835 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Non null terminated string used in a string function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2836 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 258 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Possible: Non null terminated string used in a string function. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2839 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Dereference of an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2840 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Dereference of an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2841 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 259 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Dereference of an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2842 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Dereference of an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2843 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Dereference of an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2844 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 260 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2845 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2846 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2847 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 261 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2848 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2849 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2850 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 262 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2851 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2852 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2853 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 263 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Casting to a signed integer type of insufficient size. Ticket(s): 2855 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. Definite: Casting to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2856 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Casting to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2857 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 264 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Casting to a signed integer type of insufficient size. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2858 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Implementation-defined value resulting from left shift opera- tion on expression of signed type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2860 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Implementation-defined value resulting from left shift operation on expression of signed type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2861 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 265 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Implementation-defined value resulting from left shift opera- tion on expression of signed type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2862 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Implementation-defined value resulting from left shift oper- ation on expression of signed type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2863 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Infinite loop construct with constant control expression. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2870 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 266 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Infinite loop identified. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2871 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This loop, if entered, will never terminate. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2872 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This loop will never be executed more than once. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2877 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 267 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This code is unreachable. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2880 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The code in this ’default’ clause is unreachable. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2881 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This ’switch’ statement will bypass the initialization of local variables. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2882 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 268 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This ’goto’ statement will always bypass the initialization of local vari- ables. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2883 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Function ’main’ ends with an implicit ’return’ statement. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2887 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This function has been declared with a non-void ’return’ type but ends with an implicit ’return ;’ statement. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2888 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 269 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This function has more than one ’return’ path. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2889 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Negative value implicitly converted to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2890 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Negative value implicitly converted to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2891 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 270 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Negative value implicitly converted to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2892 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Negative value implicitly converted to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2893 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Negative value cast to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2895 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 271 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Negative value cast to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2896 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Negative value cast to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2897 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Negative value cast to an unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2898 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 272 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2900 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2901 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2902 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 273 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2903 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2905 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2906 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 274 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2907 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Positive integer value truncated by cast to a smaller un- signed type. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2908 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 275 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Wraparound in unsigned arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 2910 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 276 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Wraparound in unsigned arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2911 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Wraparound in unsigned arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2912 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Wraparound in unsigned arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2913 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 277 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 2920 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 278 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2921 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2922 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2923 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 279 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Computing an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2930 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Computing an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 2931 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Computing an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2932 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 280 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Computing an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2933 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Possible: Computing an invalid pointer value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2934 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2940 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 281 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Definite: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2941 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2942 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2943 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 282 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Constant: Result of cast is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2945 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Result of cast is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2946 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Result of cast is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2947 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 283 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Result of cast is only representable in a two’s complement implementation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2948 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Constant: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2950 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2951 2752. 24451 Support for designated initialization of union member other than the first, reducing false positives and negatives where these val- ues are used. Also addressed failure for aggregate union mem- ber subsequently overwritten by a designated initializer other than the first member. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 284 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Apparent: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2952 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Suspicious: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2953 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Using object ’%s’ with tainted value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2956 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 285 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Possible: Using object ’%s’ with tainted value. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2959 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Using value of uninitialized automatic object ’%s’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2961 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Using value of uninitialized automatic object ’%s’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2962 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 286 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Using value of uninitialized automatic object ’%s’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2963 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Some members of object ’%s’ are uninitialized. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2966 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Some members of object ’%s’ are uninitialized. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2967 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 287 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Some members of object ’%s’ are uninitialized. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2968 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2971 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2972 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 288 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Passing address of uninitialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2973 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Definite: Passing address of partially initialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2976 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Apparent: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2977 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 289 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Suspicious: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2978 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The value of this function parameter is never used before being modi- fied. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2980 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This initialization is redundant. The value of this object is never used before being modified. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2981 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 290 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This assignment is redundant. The value of this object is never used before being modified. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2982 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This assignment is redundant. The value of this object is never subse- quently used. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 23955 The following messages have changed their behavior slightly, 2983 fixing a number of false positives and negatives 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This operation is redundant. The value of the result is always ’%1s’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2984 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 291 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This operation is redundant. The value of the result is always that of the left-hand operand. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2985 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This operation is redundant. The value of the result is always that of the right-hand operand. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2986 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The value of this loop controlling expression is always ’true’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2990 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 292 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The value of this ’if’ controlling expression is always ’true’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2991 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The value of this ’if’ controlling expression is always ’false’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2992 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The value of this ’do - while’ loop controlling expression is always ’false’. The loop will only be executed once. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2993 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 293 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The value of this ’while’ or ’for’ loop controlling expression is always ’false’. The loop will not be entered. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2994 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The result of this logical operation is always ’true’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2995 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. The result of this logical operation is always ’false’. Ticket(s): 21587 Dataflow has been improved to model multiple levels of pointer indirection. Since it allows more analysis to be done, all dataflow messages could be impacted 2996 24175 The handling of statement expressions and nested function pa- rameters has been improved to stop the generation of message 2752. 25189 The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. This character constant is being interpreted as a NULL pointer con- stant. 3003 Ticket(s): 24765 QAC will generate messages 3003 and 3004 correctly when the conditional operator is involved in expression. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 294 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description This integral constant expression is being interpreted as a NULL pointer constant. 3004 Ticket(s): 24765 QAC will generate messages 3003 and 3004 correctly when the conditional operator is involved in expression. This function contains a mixture of in-line assembler statements and C statements. 3006 Ticket(s): 24667 Message 3006 will recognize encapsulation of assembly in macros, supported by new message 3008 Unary ’-’ applied to an operand of type unsigned int or unsigned long gives an unsigned result. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3101 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 295 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unary ’-’ applied to an operand whose underlying type is unsigned. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3102 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [S] #pragma ’%s’ has invalid arguments and has been ignored. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 3104 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25160 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 296 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [S] A #pragma ’%s’ has been found without a matching #pragma block start directive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3107 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 297 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Nested comments are not recognized in the ISO standard. Ticket(s): 23542 Message 3108 will no longer be generated to report the occur- rence of a // character sequence within a // comment. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3108 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 298 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unrecognized preprocessing directive has been ignored because of conditional inclusion directives. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3115 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Unrecognized #pragma arguments ’%s’ This #pragma directive has been ignored. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3116 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 299 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Expected ’on’ or ’off’ after ’#pragma’ flag. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3117 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Hard-coded ’magic’ integer constant, ’%s’. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3120 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Hard-coded ’magic’ floating constant, ’%s’. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3121 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 300 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Hard-coded ’magic’ string literal, %s. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3122 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Hard coded ’magic’ character constant, %s. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3123 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 This assignment is redundant. The value of this object is never used before being modified. Ticket(s): 3199 25262 Fixed inconsistencies between the number of parameter text placeholders(%s) and the number of parameters written for the diagnostic. The variable ’%s’ is only set once and so it could be declared with the ’const’ qualifier. 3204 Ticket(s): 24995 False negatives removed for message 3204 This cast is redundant. Ticket(s): 3212 23438 Message 3344 will no longer be incorrectly generated when the controlling expression is an element of a _Bool array. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 301 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description File scope static, ’%s’, is only accessed in one function. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3218 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 [C] inline function ’%1s’ has external linkage and is defining an object, ’%2s’, with static storage duration. Ticket(s): 3237 24906 Messages 3238 and 3237 won’t cancel dataflow analysis any- more (message 2753 won’t be generated subsequently to these two ones). [C] inline function ’%1s’ has external linkage and is referring to an ob- ject, ’%2s’, with internal linkage. Ticket(s): 3238 24906 Messages 3238 and 3237 won’t cancel dataflow analysis any- more (message 2753 won’t be generated subsequently to these two ones). This ’switch’ statement is redundant. Ticket(s): 3315 24199 The behavior of message 3315 has been fixed, removing some false negatives. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 302 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description ’#if...’ not matched by ’#endif’ in included file. This is probably an error. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3317 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 ’#else’/’#elif’/’#endif’ in included file matched ’#if...’ in parent file. This is probably an error. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 3318 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Controlling expression is not an ’essentially Boolean’ expression. Ticket(s): 11200 QAC will provide option to specify typdef names that will be 3344 treated as essentially boolean when performing analysis. 23438 Message 3344 will no longer be incorrectly generated when the controlling expression is an element of a _Bool array. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 303 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The replacement list of function-like macro ’%s’ is not enclosed in (). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3409 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro defined with unbalanced brackets, parentheses or braces. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3411 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 304 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines an unrecognized code-fragment. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3412 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro definition could be replaced by a typedef. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3413 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 305 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines a storage-class or function specifier keyword. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3414 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Expression with possible side effects is used in an initializer list. Ticket(s): 24424 Message 3421 will also be generated when the initializing ex- pression involves a dereference of a pointer to a volatile object, array access to a volatile object, or access of a struct or union volatile member via the dot or arrow operator. Message 3421 3421 will no longer be incorrectly generated against an initializing ex- pression that contains addresses of volatile objects which are not dereferenced. 25044 Message 3421 will no longer be generated for calls to functions defined in the current translation unit that do not result in any form of side-effect. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 306 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines a type qualifier keyword. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3428 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro argument expression may require parentheses. Ticket(s): 3430 24771 QAC will generate message 3432 for simple (precedence-safe) arguments to macros if they are not parenthesized continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 307 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines an operator, a punctuator or a control statement key- word. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3431 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 308 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description [U] #undef’ing the assert macro to call a function of that name causes undefined behaviour. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3438 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro redefines a keyword. Ticket(s): 3439 25051 New message 3468 added to highlight C90 reserved identifiers that are now keywords in C99. Note: _Bool will now generate 3468 and not 3439. Macro ’%s’ has a replacement list which appears recursive. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3443 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 309 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The replacement list of object-like macro ’%s’ is not enclosed in (). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3452 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 A function could probably be used instead of this function-like macro. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3453 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 310 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Parameter ’%s’ will be evaluated more than once when this macro is used. Ticket(s): 3456 24774 New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Macro defines a braced initializer. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3457 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 311 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines a braced code statement block. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3458 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro defines a ’do-while-zero’ construct. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3459 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 312 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Macro defines a type specifier keyword. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3460 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Macro defines a storage-class specifier/type qualifier sequence. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3461 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 313 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Trigraphs (??x) are an ISO feature. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 3601 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Using the alert escape sequence ’\\a’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3609 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 314 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Hexadecimal escape sequence used. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3610 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Some pre-ISO compilers would treat this 8 or 9 as an octal digit. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 3613 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 315 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Character constants may have different values in preprocessor arith- metic than in actual code. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 3616 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The result of this cast is implicitly converted to another type. Ticket(s): 3892 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 316 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Both operands of & operator are ’Boolean’ expressions. Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4101 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Both operands of | operator are ’Boolean’ expressions. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4102 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 317 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Both operands of arithmetic or bitwise operator are ’Boolean’ expres- sions. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4103 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Left hand operand of arithmetic or bitwise operator is a ’Boolean’ ex- pression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4104 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 318 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Right hand operand of arithmetic or bitwise operator is a ’Boolean’ ex- pression. Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 4105 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Both operands of && operator are arithmetic or bitwise expressions. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4106 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 319 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Both operands of || operator are arithmetic or bitwise expressions. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4107 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Left hand operand of logical operator is an arithmetic or bitwise expres- sion. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4108 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 320 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Right hand operand of logical operator is an arithmetic or bitwise ex- pression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4109 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Operand of ! operator is an arithmetic or bitwise expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4110 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 321 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Right hand operand of relational operator is a ’Boolean’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4111 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Left hand operand of relational operator is a ’Boolean’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4112 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 322 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Both operands of relational operator are ’Boolean’ expressions. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4113 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Operand of ~ operator is a ’Boolean’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4114 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 323 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Operand of logical && or || operator is not an ’essentially Boolean’ ex- pression. Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 4115 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Operand of logical ! operator is not an ’essentially Boolean’ expression. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4116 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 324 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Bitwise operations on signed data will give implementation defined re- sults. 4130 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. A composite expression of ’essentially signed’ type (%1s) is being cast to a wider signed type, ’%2s’. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 4390 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. A composite expression of ’essentially signed’ type (%1s) is being cast to a different type category, ’%2s’. Ticket(s): 23497 Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 4393 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array elements, pointer dereferences, results of func- tion calls, etc. An expression of ’essentially Boolean’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4402 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially Boolean’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4403 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially signed’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4430 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially signed’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4432 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 325 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description An expression of ’essentially Boolean’ type (%1s) is being used as the %2s operand of this arithmetic operator (%3s). 4501 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially Boolean’ type (%1s) is being used as the %2s operand of this bitwise operator (%3s). 4502 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially signed’ type (%1s) is being used as the %2s operand of this bitwise operator (%3s). 4532 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An expression of ’essentially signed’ type (%1s) is being used as the %2s operand of this logical operator (%3s). 4538 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. An operand of ’essentially character’ type is being added to another operand of ’essentially character’ type. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4580 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 326 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description An operand of ’essentially character’ type is being subtracted from an operand of ’essentially signed’ type. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4581 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 An operand of ’essentially character’ type is being subtracted from an operand of ’essentially unsigned’ type. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4582 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 327 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description An expression of ’essentially character’ type (%1s) is being used as the %2s operand of this arithmetic operator (%3s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4583 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 An expression of ’essentially character’ type (%1s) is being used as the %2s operand of this bitwise operator (%3s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4584 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 328 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description An expression of ’essentially character’ type (%1s) is being used as the left-hand operand of this shift operator (%2s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4585 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 An expression of ’essentially character’ type (%1s) is being used as the right-hand operand of this shift operator (%2s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4586 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 329 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description An expression of ’essentially signed’ type (%1s) is being used as the left-hand operand of this shift operator (%2s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4587 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 A non-negative constant expression of ’essentially signed’ type (%1s) is being used as the %2s operand of this bitwise operator (%3s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4588 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 330 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description A non-negative constant expression of ’essentially signed’ type (%1s) is being used as the left-hand operand of this shift operator (%2s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4589 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 A non-negative constant expression of ’essentially signed’ type (%1s) is being used as the right-hand operand of this shift operator (%2s). Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4590 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 331 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Operands of binary operator ’%1s’ have the same type ’%2s’ but distinct type names ’%3s’ and ’%4s’. 4599 Ticket(s): 11200 QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. The macro ’%1s’ is also defined in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4600 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 332 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The macro ’%1s’ is the name of an identifier in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4601 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The identifier ’%1s’ is declared as a macro in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4602 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 333 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The object/function ’%1s’is being defined with the same name as an ordinary identifier defined in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4603 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The object/function ’%1s’ is being declared with the same name as an ordinary identifier defined in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4604 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 334 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The typedef ’%1s’ is also defined in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4605 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The typedef ’%1s’ has the same name as another ordinary identifier in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4606 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 335 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The enum constant ’%1s’ has the same name as another ordinary iden- tifier in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4607 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The tag ’%1s’ is also defined in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4608 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 336 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The macro ’%1s’ may also be defined as a macro in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4620 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The macro ’%1s’ may also be defined as a typedef in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4621 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 337 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The identifier ’%1s’ may be defined as a macro in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4622 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The typedef ’%1s’ may also be defined in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4623 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 338 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The ordinary identifier ’%1s’ may be defined as a typedef in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 4624 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The macro ’%1s’ could conflict in the future with the name of a macro in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 4640 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 339 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The identifier ’%1s’ could conflict in the future with the name of a macro in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4641 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The macro ’%1s’ could conflict in the future with the name of a function in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 4642 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 340 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The identifier ’%1s’ could conflict in the future with the name of a func- tion in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4643 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 The macro ’%1s’ could conflict in the future with the name of a typedef in ’<%2s>’. Ticket(s): 24727 QAC will generate new message 0603 whenever macro identi- fier beginning with an underscore is defined or undefined. 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 4644 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 341 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The identifier ’%1s’ could conflict in the future with the name of a type- def in ’<%2s>’. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 4645 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 342 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Metric value out of threshold range: %s. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4700 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 343 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Invalid annotation: tag ’%1s’ is not defined subsequently in this file. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4810 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 344 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The start of the range ’%1s’, starts and ends at the same location. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4811 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 345 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description ’%1s’ not allowed here. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4812 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 346 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The location annotation is not preceded by a suppression annotation which refers to it. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 4813 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 347 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description A location annotation cannot itself have a location specifier. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4814 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 348 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description The specified product name is invalid. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4815 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 349 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Justification comments are not allowed in location annotations. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4816 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 350 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Justification comments are not allowed to be empty. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4817 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 351 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Annotation kind is expected. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4820 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 352 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Colon is expected. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4821 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 353 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Tag name is expected. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4822 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 354 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Annotation syntax error. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4823 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 355 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Invalid character in tag name. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4824 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 356 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unexpected character. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4825 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 357 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Message specification is incomplete or missing. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4826 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 358 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Tag name is not allowed in the message specification of continuous suppression annotation. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 4827 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 359 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Invalid usage of predefined location tag. Ticket(s): 25148 The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 4828 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600- 4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Invalid character in message specifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4829 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 360 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unexpected left bracket in message specifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4830 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Unexpected right bracket in message specifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4831 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Unexpected left bracket in tag name. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4832 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 361 Programming Research Ltd.

Table 3.9 – continued from previous page Msg. Id. Description Unexpected right bracket in tag name. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4833 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Expected left bracket in product specifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4834 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Expected right bracket in product specifier. Ticket(s): 25151 The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improv- ing consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 4835 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835

3.4.4 Message Text Changes

The following table summarizes message text changes.

RELEASE NOTES : QA·C 9.4.1 Page 362 Programming Research Ltd.

Table 3.10: Changed Message Text for QA·C 9.3.0 Msg. Message Text Change Ticket Id. QAC-9.3.0 Switch expression is of essentially Boolean type. 0735 QAC-9.2.0 Using relational or logical operators in a ’switch’ expres- 25080 sion is usually a programming error. QAC-9.3.0 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly 23823 to ISO:C99. 0789 24326 QAC-9.2.0 Identifier matches other identifier(s) (e.g. ’%s’) in first 24855 63 characters - program does not conform strictly to ISO:C99. 24724 QAC-9.3.0 [C] ’#include’ does not identify a header or source file 25148 that can be processed. 0821 25151 QAC-9.2.0 [C] ’#include %s’ does not identify a header or source 25160 file that can be processed. 25262 QAC-9.3.0 ’#%s’ directive controlling expression does not evaluate to zero or one. 25148 0894 QAC-9.2.0 #%s directive controlling expression does not evaluate 25151 to zero or one. QAC-9.3.0 [C99] Operand of sizeof is an expression of variable length array type with side effects. 0945 24460 QAC-9.2.0 [C99] WARNING. Operand of sizeof is an expression of variable length array type. QAC-9.3.0 [S] End-of-file encountered when expecting ’#endif’ pre- processing directive. 25151 1005 QAC-9.2.0 [S] End-of-file encountered when expecting ’#%s’ pre- 25262 processing directive. QAC-9.3.0 [C99] Union member is a struct declared with a flexible array member. 1067 25262 QAC-9.2.0 [C99] Union member ’%s’ is a struct declared with a flex- ible array member. QAC-9.3.0 [E] Union member is a struct declared with a potentially- flexible array member. 1068 25262 QAC-9.2.0 [E] Union member ’%s’ is a struct declared with a potentially-flexible array member. QAC-9.3.0 Destination and source objects have incompatible types. 1495 25262 QAC-9.2.0 %s destination and source objects have incompatible types. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 363 Programming Research Ltd.

Table 3.10 – continued from previous page Msg. Message Text Change Ticket Id. QAC-9.3.0 Destination and source objects may have incompatible types. 1496 25262 QAC-9.2.0 %s destination and source objects may have incompat- ible types. QAC-9.3.0 This assignment is redundant. The value of this object is never used before being modified. 3199 25262 QAC-9.2.0 This assignment is redundant. The value of ’%s’ is never subsequently used. QAC-9.3.0 This ’switch’ statement is redundant. 3315 QAC-9.2.0 This ’switch’ statement contains only a single path - it is 24199 redundant.

3.5 Messages for QA·C 9.2.0

3.5.1 New Messages

The following table lists messages which are new in QA·C 9.2.0.

Table 3.11: Messages Added for QA·C 9.2.0

Msg. Id. Description %s destination and source objects have incompatible types. Ticket(s): 23471 A new message 1496 will be generated when the destination and/or source argument of memcpy or memmove is a pointer to void. Otherwise, a new message 1495 will be generated when 1495 the destination and source arguments of memcpy or memmove are not pointers to qualified or unqualified versions of compat- ible types. Existing message 1487 will also be extended, so that array arguments to memcmp will be handled as pointer ar- guments. Consequently message 1487 will no longer be incor- rectly generated in certain situations involving array parameters. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 364 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description %s destination and source objects may have incompatible types. Ticket(s): 23471 A new message 1496 will be generated when the destination and/or source argument of memcpy or memmove is a pointer to void. Otherwise, a new message 1495 will be generated when 1496 the destination and source arguments of memcpy or memmove are not pointers to qualified or unqualified versions of compat- ible types. Existing message 1487 will also be extended, so that array arguments to memcmp will be handled as pointer ar- guments. Consequently message 1487 will no longer be incor- rectly generated in certain situations involving array parameters. Comparison of a string object representation. Ticket(s): 23781 A new message 1497 will be generated when the memcmp func- 1497 tion is used to compare string objects. Note: message 1497 contributes to the enforcement of MISRA C:2012 Amendment 1 Rule 21.16. The string referenced by type ’struct lconv’ member ’%s’ is being modified. Ticket(s): 23788 A new message 1498 will be generated to report situations where a string referenced by a member of an object of type struct lconv is directly modified. Message 1498 will be gener- ated irrespective of whether the object is obtained from a call to library function ’localeconv’ in . Members of struct lconv that refer to strings are of type ’char *’, however they should be treated as being of type ’const char *’, to avoid un- defined behaviour. Message 1498 contributes to enforce this re- striction, and therefore contributes to the enforcement of MISRA 1498 C:2012 Amendment 1 Rule 21.19. As a consequence of this up- grade, the behaviour of message 1492 will also be refined and extended: message 1492 will no longer be generated against modification of struct lconv strings, but it will still be generated in all other circumstances, and not only when direct modifica- tions to library objects are made via simple assignment, but also when they are made via composite assignments and prefix/post- fix increment/decrement operators. As part of this upgrade, the definition of struct lconv in PRQA’s default header will also be extended to comply with the C99 and C11 stan- dards, by adding members int_p_cs_precedes, int_n_cs_pre- cedes, int_p_sep_by_space, int_n_sep_by_space, int_p_sign_- posn and int_n_sign_posn. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 365 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Definite: The value being compared with macro EOF does not originate from an EOF returning function. Ticket(s): 22789 New messages 2676 and 2678 are generated when Dataflow 2671 detects that the value returned from a Standard Library function that can return EOF is modified before being compared to macro EOF. In addition, new messages 2671 and 2674 are generated when a value being compared with macro EOF is seen as not having originated from am EOF returning function. Possible: The value being compared with macro EOF does not origi- nate from an EOF returning function. Ticket(s): 22789 New messages 2676 and 2678 are generated when Dataflow 2674 detects that the value returned from a Standard Library function that can return EOF is modified before being compared to macro EOF. In addition, new messages 2671 and 2674 are generated when a value being compared with macro EOF is seen as not having originated from am EOF returning function. Definite: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 22789 New messages 2676 and 2678 are generated when Dataflow 2676 detects that the value returned from a Standard Library function that can return EOF is modified before being compared to macro EOF. In addition, new messages 2671 and 2674 are generated when a value being compared with macro EOF is seen as not having originated from am EOF returning function. Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF. Ticket(s): 22789 New messages 2676 and 2678 are generated when Dataflow 2678 detects that the value returned from a Standard Library function that can return EOF is modified before being compared to macro EOF. In addition, new messages 2671 and 2674 are generated when a value being compared with macro EOF is seen as not having originated from am EOF returning function. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 366 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Definite: Using an invalidated value ’%s’ returned from a Standard Li- brary function. Ticket(s): 2681 23941 A new message will be generated when Dataflow detects that the pointer returned by a call to one of the functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or str- error is used following a subsequent call to that same function. Apparent: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 2682 23941 A new message will be generated when Dataflow detects that the pointer returned by a call to one of the functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or str- error is used following a subsequent call to that same function. Suspicious: Using an invalidated value ’%s’ returned from a Standard Library function. Ticket(s): 2683 23941 A new message will be generated when Dataflow detects that the pointer returned by a call to one of the functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or str- error is used following a subsequent call to that same function. Constant: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 2785 22832 A new message will be generated when Dataflow detects that the Standard Library function memcmp is being used to com- pare null terminated strings. Definite: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 22832 A new message will be generated when Dataflow detects that the Standard Library function memcmp is being used to com- 2786 pare null terminated strings. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 367 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Possible: Null terminated string is being passed as argument to Stan- dard Library function memcmp. Ticket(s): 22832 A new message will be generated when Dataflow detects that the Standard Library function memcmp is being used to com- 2789 pare null terminated strings. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these 2806 wide character functions in . 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these 2807 wide character functions in . 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 368 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Suspicious: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these 2808 wide character functions in . 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Calling a standard library wide character handling function with an invalid character value. Ticket(s): 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these 2809 wide character functions in . 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Calling a standard library character input/output function with an invalid character value. Ticket(s): 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have 2816 been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 369 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Apparent: Calling a standard library character input/output function with an invalid character value. Ticket(s): 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have 2817 been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Calling a standard library character input/output function with an invalid character value. Ticket(s): 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have 2818 been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Calling a standard library character input/output function with an invalid character value. Ticket(s): 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have 2819 been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Non null terminated string used in a string function. Ticket(s): 22788 A new message is generated when Dataflow detects incorrect 2835 use of Standard Library string handling functions that results in access beyond the bounds of an object passed as an argument to the function. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 370 Programming Research Ltd.

Table 3.11 – continued from previous page Msg. Id. Description Definite: Non null terminated string used in a string function. Ticket(s): 22788 A new message is generated when Dataflow detects incorrect use of Standard Library string handling functions that results in access beyond the bounds of an object passed as an argument 2836 to the function. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Non null terminated string used in a string function. Ticket(s): 22788 A new message is generated when Dataflow detects incorrect use of Standard Library string handling functions that results in access beyond the bounds of an object passed as an argument 2839 to the function. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This goto statement references a label that is declared in a separate block. Ticket(s): 3327 14125 A new message 3327 will be generated when a goto statement references a label which is not declared in the same block, or in any block enclosing that goto statement. Note: message 3327 can be used to enforce MISRA C:2012 Rule 15.3. Justification comments are not allowed in location annotations. Ticket(s): 4816 23502 Ability to add Justification Reason to Comment Based Suppres- sions and Include in Report. Justification comments are not allowed to be empty. Ticket(s): 4817 23502 Ability to add Justification Reason to Comment Based Suppres- sions and Include in Report.

RELEASE NOTES : QA·C 9.4.1 Page 371 Programming Research Ltd.

3.5.2 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

Table 3.12: Messages Modified for QA·C 9.2.0

Msg. Id. Description [I] Multiple character constants have implementation defined values. Ticket(s): 0284 24373 Message 0284 will no longer be incorrectly generated when the glue operator ’##’ is used in a macro to produce a wide character constant from a single character.,0284„„„, [I] Character constant contains character which is not a member of the basic source character set. 0285 Ticket(s): 24374 Message 0285 will only be generated once per character con- stant, against the leftmost character applicable. Using the ’#error’ preprocessing directive. Ticket(s): 0340 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using the stringify operator ’#’. Ticket(s): 0341 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using the glue operator ’##’. Ticket(s): 0342 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using string literal concatenation. Ticket(s): 0343 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using the ’#elif’ preprocessing directive. Ticket(s): 0352 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 372 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99. Ticket(s): 0372 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [L] Number of macro definitions exceeds 4095 - program does not con- form strictly to ISO:C99. Ticket(s): 23393 Messages 0380 and 0857 will be generated against the macro definition in the main source file that causes the applicable ISO C limit to be exceeded. If instead that macro definition hap- pens to be located in an included header, then message 0380 or 0857 will be generated against the ’#include’ directive in the main source file that leads to the inclusion of that macro defini- 0380 tion. Since messages 0380 and 0857 will no longer be incor- rectly generated at the non-existent line 0, it will be possible to suppress them. 24389 Messages 0380 and 0857 will be generated when the macro identifiers that are ’simultaneously’ defined exceeds the applica- ble limit. More specifically, an ’#undef’ preprocessing directive applied to a macro identifier which is defined at that point, will decrease the running count of macro identifiers being compared against the limits. [U] ’%s’ may be modified and accessed between sequence points - evaluation order unspecified. Ticket(s): 23548 Message 0403 will no longer be incorrectly generated is situa- 0403 tions where a statement expression is used as an operand of an operator whose order of evaluation is unspecified, and the other operand includes the identifier of a local object, and the statement expression does not use or modify that local object. Function identifier is not followed by () but a function call may be in- tended. 0428 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 373 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [S] The identifier ’%s’ has not been declared. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. ’typedef my_new_type;’) will be intrepreted as having an implicit 0434 type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. [C] The ’struct’/’union’ member ’%s’ does not exist. Ticket(s): 22098 Message 0435 will no longer be incorrectly generated for desig- nators of structure members under certain circumstances where the members are part of a nested structure and their designators are preceded by a chain of partially designated initialisers. 0435 22180 QAC will no longer incorrectly generate messages 435, 693 and 904 for initialisation of nested objects using designated initialis- ers under certain circumstances where preceding nested ob- jects are initialised with designated initialisers that do not reflect the order in the declaration of the object type. See Full Support for Designated Initializers [C] Left operand of ’.’ must be a ’struct’ or ’union’ object. Ticket(s): 0436 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers [C] ’sizeof’ cannot be applied to an object of unknown size. Ticket(s): 0478 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] The identifier ’%s’ has been declared both with and without linkage in the same scope. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. 0622 ’typedef my_new_type;’) will be intrepreted as having an implicit type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 374 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Function ’%s’ is declared using typedefs which are different to those in a previous declaration. Ticket(s): 24198 QAC analysis will no longer abort with a SIGSEGV fault under 0624 certain circumstances, which involve the definition of functions with parameters of pointer or array type, whose pointed-to type or element type is defined using a typedef, which in turn involves an array of pointers to a type that is also defined using a typedef. [C] More than one declaration of ’%s’ (with no linkage). Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. ’typedef my_new_type;’) will be intrepreted as having an implicit 0631 type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. [U] ’%s’ is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. 0667 ’typedef my_new_type;’) will be intrepreted as having an implicit type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. [C] Initializer for object of arithmetic type is not of arithmetic type. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, so that subsequent expressions in the initialiser list will not be 0671 affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 375 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] Initializer points to a more heavily qualified type. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, 0673 so that subsequent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. [C] Initializer for pointer is of incompatible type. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, so that subsequent expressions in the initialiser list will not be 0674 affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] Initializer is not of compatible ’struct’/’union’ type. Ticket(s): 0675 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] Initializer for object of a character type is a string literal. Ticket(s): 0682 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] Initializer for object of a character type is a wide string literal. Ticket(s): 0683 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] Too many initializers. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, so that subsequent expressions in the initialiser list will not be 0684 affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 376 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] Initializer for any object with static storage duration must be a con- stant expression. 0685 Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements. 0686 Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] String literal contains too many characters to initialize object. Ticket(s): 0690 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Union initializer is missing the optional {. Ticket(s): 0692 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Struct initializer is missing the optional {. Ticket(s): 22180 QAC will no longer incorrectly generate messages 435, 693 and 904 for initialisation of nested objects using designated initialis- 0693 ers under certain circumstances where preceding nested ob- jects are initialised with designated initialisers that do not reflect the order in the declaration of the object type. See Full Support for Designated Initializers Array initializer is missing the optional {. Ticket(s): 0694 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] String literal used to initialize an object of incompatible type. Ticket(s): 0698 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C] String literal used to initialize a pointer of incompatible type. Ticket(s): 0699 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Argument for memory size does not refer to ’sizeof (%s)’. Ticket(s): 0701 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 377 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Result of sizeof operator is not explicitly cast. Ticket(s): 0702 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Structure has fewer initializers than its declared size. Default initializa- tion is applied to the remainder of the members. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, 0703 so that subsequent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. String literal assigned to pointer which is not a ’pointer to const’. Ticket(s): 0753 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Identifier ’%s’ is also used as a macro name. Ticket(s): 0784 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C] The ’##’ operator may not be the first token in a macro replacement list. Ticket(s): 20272 Message locations have been improved as part of restructuring 0801 to enable future use of a preprocessor common to both C and C++ analyzers. 24378 Messages 0801 and 0802 will be generated even if the macro happens to be redefined.,0801,0802„„„ [C] The ’##’ operator may not be the last token in a macro replacement list. Ticket(s): 20272 Message locations have been improved as part of restructuring 0802 to enable future use of a preprocessor common to both C and C++ analyzers. 24378 Messages 0801 and 0802 will be generated even if the macro happens to be redefined.,0801,0802„„„ continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 378 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] The ’#’ operator may only appear before a macro parameter. Ticket(s): 0803 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C] The glue operator ’##’ may only appear in a ’#define’ preprocessing directive. Ticket(s): 24384 Message 0811 will no longer be incorrectly generated in certain 0811 situations where a glue operator ’##’ is constructed during pre- processing and used on a further series of macro expansions, but it is neither applied nor ends up being part of the prepro- cessed source code. [C] Header name token ’’ found outside ’#include’ preprocessing directive. Ticket(s): 0812 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [S] Unexpected ’#else’ or ’#elif’ directive found outside a ’#if’ block. Ticket(s): 0824 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [S] Unexpected ’#endif’ found outside a ’#if’ block. Ticket(s): 0825 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] Unrecognized text encountered after a preprocessing directive. Ticket(s): 0830 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C] Function-like macro ’%s()’ is being redefined as an object-like macro. Ticket(s): 0834 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 379 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] Macro ’%s’ is being redefined with different parameter names. Ticket(s): 0835 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. File ’%1s’ has already been included directly from within file ’%2s’. Ticket(s): 20327 The performance of QAC will be improved when a file is repeat- edly included. This performance improvement will be negligible in most situations, however it will be quite significant in certain 0838 cases of automatically generated code, where repeated inclu- sion is both intended and intensive. As part of this update, mes- sages 0838 and 0839 will be generated only once against the applicable inclusion, even if the file has already been previously included multiple times. File ’%1s’ has already been included indirectly from within file ’%2s’. Ticket(s): 20327 The performance of QAC will be improved when a file is repeat- edly included. This performance improvement will be negligible in most situations, however it will be quite significant in certain 0839 cases of automatically generated code, where repeated inclu- sion is both intended and intensive. As part of this update, mes- sages 0838 and 0839 will be generated only once against the applicable inclusion, even if the file has already been previously included multiple times. Using ’#undef’. Ticket(s): 24377 Multiple definitions of the same macro performed via configu- ration options will be properly handled. As a result, message 0841 behaviour related to these macros may improve under certain circumstances. For example, message 0841 will be generated when a multiply defined macro is then used and undefined in the source code. Using #define or #undef inside a function. Ticket(s): 0842 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 380 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] Macro ’%s’ is being redefined with a different replacement list. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and 0844 C++ analyzers. 24400 A bug will be fixed, which causes in certain circumstances mes- sage 0844 to be generated with an incorrect reference for the macro identifier. [C] Object-like macro ’%s’ is being redefined as a function-like macro. Ticket(s): 0845 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [S] Preprocessing directive appears in the middle of a line. Ticket(s): 0849 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Preprocessing results in a sequence of tokens that has the form of a preprocessing directive. Ticket(s): 0855 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [L] Number of macro definitions exceeds 1024 - program does not con- form strictly to ISO:C90. Ticket(s): 23393 Messages 0380 and 0857 will be generated against the macro definition in the main source file that causes the applicable ISO C limit to be exceeded. If instead that macro definition hap- pens to be located in an included header, then message 0380 or 0857 will be generated against the ’#include’ directive in the main source file that leads to the inclusion of that macro defini- 0857 tion. Since messages 0380 and 0857 will no longer be incor- rectly generated at the non-existent line 0, it will be possible to suppress them. 24389 Messages 0380 and 0857 will be generated when the macro identifiers that are ’simultaneously’ defined exceeds the applica- ble limit. More specifically, an ’#undef’ preprocessing directive applied to a macro identifier which is defined at that point, will decrease the running count of macro identifiers being compared against the limits. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 381 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [L] Number of macro parameters exceeds 31 - program does not con- form strictly to ISO:C90. Ticket(s): 0858 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [L] Number of arguments in macro call exceeds 31 - program does not conform strictly to ISO:C90. Ticket(s): 24375 Message 0859 will no longer be incorrectly generated when a 0859 function-like macro call contains exactly 31 arguments. Also, when the function-like macro call contains more than 31 argu- ments, message 0859 will be generated against the 32nd and not the 31st argument. [S] ’#line’ encountered without a following line number. Ticket(s): 0863 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [U] ’#line’ directive specifies line number which is not in the range 1 to 32767. Ticket(s): 0864 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [U] ’#line’ directive is badly formed. Ticket(s): 0865 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C] The string literal in a ’#line’ directive cannot be a ’wide string literal’. Ticket(s): 0866 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [U] ’#line’ has not been followed by a line number. Ticket(s): 0867 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 382 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [C] Preprocessing token cannot be converted to an actual token. Ticket(s): 0873 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [U] Character string literal and wide character string literal are adjacent. Ticket(s): 0874 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [L] String literal exceeds 509 characters - program does not conform strictly to ISO:C90. Ticket(s): 0875 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using wide character or string literals. Ticket(s): 0878 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using # and ## operators in the same macro definition. Ticket(s): 0880 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using multiple ## operators in the same macro definition. Ticket(s): 0881 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Include file code is not protected against repeated inclusion Ticket(s): 0883 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using multiple # operators in the same macro definition. Ticket(s): 0884 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 383 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description #ifdef refers to a macro that has been #undef’d in a previous #if block. Ticket(s): 0890 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. #ifdef refers to a macro that has been #undef’d previously. Ticket(s): 0891 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension. Ticket(s): 0899 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [S] Invalid designator. Ticket(s): 22180 QAC will no longer incorrectly generate messages 435, 693 and 904 for initialisation of nested objects using designated initialis- 0904 ers under certain circumstances where preceding nested ob- jects are initialised with designated initialisers that do not reflect the order in the declaration of the object type. See Full Support for Designated Initializers Inserted ’%s’ token in an attempt to continue parsing. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. ’typedef my_new_type;’) will be intrepreted as having an implicit 0911 type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. [S] Expected:%s. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. ’typedef my_new_type;’) will be intrepreted as having an implicit 0926 type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 384 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [E] ’%s’ is not a legal identifier in ISO C. Ticket(s): 1002 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] ’#%s’ is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored. Ticket(s): 1003 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [S] ’#endasm’ found without matching ’#asm’ preprocessing directive. Ticket(s): 1004 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] ’#%s’ is not a legal ISO C preprocessing directive. Ticket(s): 1008 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C99] Use of LL suffix. Ticket(s): 1018 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] A statement expression is not supported in ISO C, and is treated as a language extension. Ticket(s): 24398 Message 3459 will be generated instead of message 3412 whenever a macro replacement list contains a do-while-zero 1021 statement, even its loop body is a single statement (not enclosed in curly brackets). Message 1021 will be generated instead of message 3412 when a macro replacement list contains a state- ment expression (note that statement expressions are a GCC language extension). [C99] Initializer for ’struct’, ’union’ or array type is not a constant expres- sion. 1031 Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 385 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description [E] Comma before ## ignored in expansion of variadic macro. This is a language extension. Ticket(s): 1036 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] Arrays of length zero are a language extension. Ticket(s): 1037 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [E] Using I64 or UI64 as an integer constant suffix. This is a language extension. Ticket(s): 1042 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [E] Use of the #include_next preprocessing directive is a language ex- tension. Ticket(s): 1045 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. [C99] Designators have been used in this initialization list. Ticket(s): 1053 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C99] The keyword ’_Bool’ has been used. Ticket(s): 1056 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. [C99] Taking sizeof a struct with a flexible array member while adding an array size based on the wrong element type. 1073 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant suffixed with L is being converted to type signed or unsigned long long on assignment. 1256 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 386 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An integer constant suffixed with L or LL is being converted to a type of lower rank on assignment. 1257 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A suffixed floating constant is being converted to a different floating type on assignment. 1264 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An unsuffixed floating constant is being converted to a different floating type on assignment. 1265 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A floating constant is being converted to integral type on assignment. Ticket(s): 1266 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant is being converted to floating type on assignment. Ticket(s): 1276 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially signed’ type is being converted to unsigned type on assignment. 1290 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially unsigned’ type is being converted to signed type on assignment. Ticket(s): 1291 23581 When a struct/union/array is initialised with an initialiser list, messages 1291, 1398 and 3421 will be generated against the initialiser’s expression they refer to, instead of the subsequent token (comma or curly bracket). An integer constant of ’essentially signed’ type is being converted to type char on assignment. 1292 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 387 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An integer constant of ’essentially unsigned’ type is being converted to type char on assignment. 1293 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially signed’ type is being converted to type _Bool on assignment. 1294 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially unsigned’ type is being converted to type _Bool on assignment. 1295 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially signed’ type is being converted to enum type on assignment. 1296 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially unsigned’ type is being converted to enum type on assignment. 1297 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially signed’ type is being converted to floating type on assignment. 1298 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An integer constant of ’essentially unsigned’ type is being converted to floating type on assignment. 1299 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers The array being initialized is not large enough to hold a terminating null byte for the string initializer. 1312 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 388 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Value of constant expression is not in the enum type to which it is being converted. Ticket(s): 1317 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. The macro __STDC__ has been used. It may not be present in a C++ environment. Ticket(s): 1327 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. The parameter identifiers in the prototypes of these functions/function pointers are different. 1334 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Array element ’%s’ has already been initialized. Ticket(s): 1397 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Structure member ’%s’ has already been initialized. Ticket(s): 23581 When a struct/union/array is initialised with an initialiser list, 1398 messages 1291, 1398 and 3421 will be generated against the initialiser’s expression they refer to, instead of the subsequent token (comma or curly bracket). A union member has already been initialized. Ticket(s): 1399 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An enum constant is being assigned to an object of a different enum type. 1402 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of non-enum type is being assigned to an object of enum type. 1412 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 389 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An enum object is being assigned to an object of a different enum type. Ticket(s): 1422 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An enum object is being assigned to an object of non-enum type. Ticket(s): 1432 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of non-enum type is being assigned to an object of enum type. 1442 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Comparing the representations of objects of different types. Ticket(s): 23471 A new message 1496 will be generated when the destination and/or source argument of memcpy or memmove is a pointer to void. Otherwise, a new message 1495 will be generated when the destination and source arguments of memcpy or memmove are not pointers to qualified or unqualified versions of compat- ible types. Existing message 1487 will also be extended, so 1487 that array arguments to memcmp will be handled as pointer ar- guments. Consequently message 1487 will no longer be incor- rectly generated in certain situations involving array parameters. 23780 Message 1487 will no longer be incorrectly generated in cases where the arguments of library function ’memcmp’ refer to ob- jects that are declared with a storage class specifier (e.g. ’ex- tern’, ’static’, etc). Note that message 1487 contributes to the the enforcement of MISRA C:2012 Amendment 1 Rule 21.15. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 390 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The result of library function ’%s’ is used to modify the referenced ob- ject. Ticket(s): 23788 A new message 1498 will be generated to report situations where a string referenced by a member of an object of type struct lconv is directly modified. Message 1498 will be gener- ated irrespective of whether the object is obtained from a call to library function ’localeconv’ in . Members of struct lconv that refer to strings are of type ’char *’, however they should be treated as being of type ’const char *’, to avoid un- defined behaviour. Message 1498 contributes to enforce this re- striction, and therefore contributes to the enforcement of MISRA 1492 C:2012 Amendment 1 Rule 21.19. As a consequence of this up- grade, the behaviour of message 1492 will also be refined and extended: message 1492 will no longer be generated against modification of struct lconv strings, but it will still be generated in all other circumstances, and not only when direct modifica- tions to library objects are made via simple assignment, but also when they are made via composite assignments and prefix/post- fix increment/decrement operators. As part of this upgrade, the definition of struct lconv in PRQA’s default header will also be extended to comply with the C99 and C11 stan- dards, by adding members int_p_cs_precedes, int_n_cs_pre- cedes, int_p_sep_by_space, int_n_sep_by_space, int_p_sign_- posn and int_n_sign_posn. Called from here. Ticket(s): 1570 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Variable ’%1s’ previously seen here. (Specimen value: ’%2s’). Ticket(s): 1575 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Referenced here. Ticket(s): 1579 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 391 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Function ’%1s’ calls ’%2s’ here. Ticket(s): 1580 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Previously seen here. Ticket(s): 1582 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Previously set here. Ticket(s): 1586 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Offending operand. Ticket(s): 1590 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. ’%1s’ declared in %2s ’%3s’. Ticket(s): 1592 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. ’%1s’ declared here. Ticket(s): 1594 21451 Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where vari- ables are set rather than the function parameter. Null preprocessing directive used. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. 1690 24379 Message 1691 will be correctly generated and message 1690 will no longer be incorrectly generated in certain situations that may involve for instance excluded section of code being on #elif or #else branches, of the null preprocessing directive not being followed by a comment. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 392 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Null preprocessing directive used in an excluded section of code. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. 1691 24379 Message 1691 will be correctly generated and message 1690 will no longer be incorrectly generated in certain situations that may involve for instance excluded section of code being on #elif or #else branches, of the null preprocessing directive not being followed by a comment. The function ’%s()’ must not be called. Ticket(s): 23579 When the warncall option is used to enable the reporting of calls to the ’exit’ function, QAC will no longer generate default mes- sage 2010 (or any other alternative message specified by the 2010 warncall option) against statement expressions that do not con- tain calls to the ’exit’ function. In these situations M3CM will also no longer incorrectly generate message 5126 to report violations of MISRA C:2012 Rule 21.8. Note that statement expressions are a GCC language extension, and that function ’exit’ is defined in the standard library header . The ’int’ type specifier has been omitted from an object declaration. Ticket(s): 23820 Typedef declarations where the source type is omitted (e.g. ’typedef my_new_type;’) will be intrepreted as having an implicit 2051 type int (e.g. ’typedef int my_new_type’). In these cases a num- ber of messages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. This indentation is not consistent with previous indentation in this file. Ticket(s): 24393 Message 2201 will be generated even if the first token of the line with the inconsistent indentation happens to be a macro that 2201 expands to nothing. Note that the false positives and many of the false negatives of message 2201 in QAC 9.1.0 have been cleared in QAC 9.1.1 through ticket 23664 and that this ticket will clear a small number of remaining false negatives.,2201„„„, ’%s’ is not aligned with the previously declared identifier. Ticket(s): 2211 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 393 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. Ticket(s): 23789 A new configuration option ’-errnosettingfunction’ or ’-esf’, which is followed by the identifier of a function, will be recognised. The specified function will be handled as a function that returns error information using ’errno’. Note that according to the C standard the following functions are errno setting functions, and QAC will by default handle them as such: ftell, fgetpos, fsetpos, fgetwc, fputwc, strtoimax, strtoumax, strtol, strtoul, strtoll, strtoull, strtof, strtod, strtold wcstoimax, wcstoumax, wcstol, wcstoul, wcstoll, 2500 wcstoull, wcstof, wcstod, wcstold, wcrtomb, wcsrtombs, mbr- towc. The configuration option is intended to identify any ad- ditional functions that are also to be considered errno setting. This option will affect the behaviour of messages 2500, 2501, 2502 and 2503 and will contribute to the enforcement of MISRA C:2012 Amendment 1 Rules 22.8, 22.9 and 22.10. 23793 Messages 2500, 2501, 2502 and 2503 will be extended to en- force the intended sequence of actions in the handling of errno also in situations where e.g. those actions span across (1) an ’if’, ’while’ or ’do while’ statement whose body is not enclosed in curly brackets, or (2) a conditional operator. Call to ’%s’ is not immediately followed by the testing of ’errno’. Ticket(s): 23789 A new configuration option ’-errnosettingfunction’ or ’-esf’, which is followed by the identifier of a function, will be recognised. The specified function will be handled as a function that returns error information using ’errno’. Note that according to the C standard the following functions are errno setting functions, and QAC will by default handle them as such: ftell, fgetpos, fsetpos, fgetwc, fputwc, strtoimax, strtoumax, strtol, strtoul, strtoll, strtoull, strtof, strtod, strtold wcstoimax, wcstoumax, wcstol, wcstoul, wcstoll, 2501 wcstoull, wcstof, wcstod, wcstold, wcrtomb, wcsrtombs, mbr- towc. The configuration option is intended to identify any ad- ditional functions that are also to be considered errno setting. This option will affect the behaviour of messages 2500, 2501, 2502 and 2503 and will contribute to the enforcement of MISRA C:2012 Amendment 1 Rules 22.8, 22.9 and 22.10. 23793 Messages 2500, 2501, 2502 and 2503 will be extended to en- force the intended sequence of actions in the handling of errno also in situations where e.g. those actions span across (1) an ’if’, ’while’ or ’do while’ statement whose body is not enclosed in curly brackets, or (2) a conditional operator. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 394 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Zeroing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. Ticket(s): 23789 A new configuration option ’-errnosettingfunction’ or ’-esf’, which is followed by the identifier of a function, will be recognised. The specified function will be handled as a function that returns error information using ’errno’. Note that according to the C standard the following functions are errno setting functions, and QAC will by default handle them as such: ftell, fgetpos, fsetpos, fgetwc, fputwc, strtoimax, strtoumax, strtol, strtoul, strtoll, strtoull, strtof, strtod, strtold wcstoimax, wcstoumax, wcstol, wcstoul, wcstoll, 2502 wcstoull, wcstof, wcstod, wcstold, wcrtomb, wcsrtombs, mbr- towc. The configuration option is intended to identify any ad- ditional functions that are also to be considered errno setting. This option will affect the behaviour of messages 2500, 2501, 2502 and 2503 and will contribute to the enforcement of MISRA C:2012 Amendment 1 Rules 22.8, 22.9 and 22.10. 23793 Messages 2500, 2501, 2502 and 2503 will be extended to en- force the intended sequence of actions in the handling of errno also in situations where e.g. those actions span across (1) an ’if’, ’while’ or ’do while’ statement whose body is not enclosed in curly brackets, or (2) a conditional operator. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 395 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Testing of ’errno’ is not immediately preceded by a call to an ’errno’ setting function. Ticket(s): 23789 A new configuration option ’-errnosettingfunction’ or ’-esf’, which is followed by the identifier of a function, will be recognised. The specified function will be handled as a function that returns error information using ’errno’. Note that according to the C standard the following functions are errno setting functions, and QAC will by default handle them as such: ftell, fgetpos, fsetpos, fgetwc, fputwc, strtoimax, strtoumax, strtol, strtoul, strtoll, strtoull, strtof, strtod, strtold wcstoimax, wcstoumax, wcstol, wcstoul, wcstoll, 2503 wcstoull, wcstof, wcstod, wcstold, wcrtomb, wcsrtombs, mbr- towc. The configuration option is intended to identify any ad- ditional functions that are also to be considered errno setting. This option will affect the behaviour of messages 2500, 2501, 2502 and 2503 and will contribute to the enforcement of MISRA C:2012 Amendment 1 Rules 22.8, 22.9 and 22.10. 23793 Messages 2500, 2501, 2502 and 2503 will be extended to en- force the intended sequence of actions in the handling of errno also in situations where e.g. those actions span across (1) an ’if’, ’while’ or ’do while’ statement whose body is not enclosed in curly brackets, or (2) a conditional operator. Analysis time of function ’%1s’ has exceeded the configured maximum: ’%2sms’. Dataflow analysis continues with the next function. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2755 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis continues with the next query. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2758 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 396 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Subtracting pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2761 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Subtracting pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2762 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Subtracting pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2763 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Subtracting pointers that address different members of the same object. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2766 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 397 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Subtracting pointers that address different members of the same object. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2767 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Subtracting pointers that address different members of the same object. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2768 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Comparing pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2771 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Comparing pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2772 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 398 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Comparing pointers that address different objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2773 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Copy between overlapping objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2776 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Copy between overlapping objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2777 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Copy between overlapping objects. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2778 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 399 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2781 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2782 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Function argument has fewer elements than the array di- mension in the parameter declaration for non-inlined call. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2783 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2784 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 400 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Right hand operand of shift operator is negative or too large. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2791 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Right hand operand of shift operator is negative or too large. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2792 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Right hand operand of shift operator is negative or too large. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2793 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 401 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Calling a standard library character handling function with an invalid character value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these wide character functions in . 2796 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Calling a standard library character handling function with an invalid character value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these wide character functions in . 2797 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 402 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Calling a standard library character handling function with an invalid character value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these wide character functions in . 2798 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Calling a standard library character handling function with an invalid character value. Ticket(s): 23794 Messages 2796, 2797, 2798 and 2799 will no longer be gen- erated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these wide character functions in . 23796 Messages 2796, 2797, 2798 and 2799 will no longer be gen- 2799 erated for character input/output functions in and . New messages 2816, 2817, 2818 and 2819 have been added to cover these character input/output functions. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 403 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Overflow in signed arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2801 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Overflow in signed arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2802 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Overflow in signed arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2803 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Dereference of NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2811 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 404 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Dereference of NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2812 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Dereference of NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2813 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Dereference of NULL pointer. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2814 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Arithmetic operation on NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2821 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 405 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Arithmetic operation on NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2822 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Arithmetic operation on NULL pointer. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2823 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Arithmetic operation on NULL pointer. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2824 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Division by zero. Ticket(s): 20341 Fixed false negatives for Dataflow messages for cases involving use of C99 non-constant initializers for struct/union/array type objects. 22653 Fixed false negative for message 2831 on structure members for aliased structures when passed as argument to a function. 2831 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 406 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Division by zero. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2832 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Division by zero. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2833 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Division by zero. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2834 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Dereference of an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2841 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 407 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Dereference of an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2842 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Dereference of an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2843 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Dereference of an invalid pointer value. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2844 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2846 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 408 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2847 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2848 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Possible: Maximum number of characters to be written is larger than the target buffer size. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2849 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Implicit conversion to a signed integer type of insufficient size. 2850 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2851 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 409 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2852 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Implicit conversion to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2853 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Casting to a signed integer type of insufficient size. Ticket(s): 2855 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Casting to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2856 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Casting to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2857 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 410 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Casting to a signed integer type of insufficient size. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2858 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Implementation-defined value resulting from left shift operation on expression of signed type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2861 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Implementation-defined value resulting from left shift opera- tion on expression of signed type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2862 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Implementation-defined value resulting from left shift oper- ation on expression of signed type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2863 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 411 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Infinite loop construct with constant control expression. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2870 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Infinite loop identified. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2871 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This loop, if entered, will never terminate. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2872 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This loop will never be executed more than once. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2877 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 412 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description This code is unreachable. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2880 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The code in this ’default’ clause is unreachable. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2881 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This ’switch’ statement will bypass the initialization of local variables. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2882 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This ’goto’ statement will always bypass the initialization of local vari- ables. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2883 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Function ’main’ ends with an implicit ’return’ statement. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2887 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 413 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description This function has been declared with a non-void ’return’ type but ends with an implicit ’return ;’ statement. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2888 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This function has more than one ’return’ path. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2889 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Negative value implicitly converted to an unsigned type. Ticket(s): 2890 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Negative value implicitly converted to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2891 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Negative value implicitly converted to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2892 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 414 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Negative value implicitly converted to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2893 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Negative value cast to an unsigned type. Ticket(s): 2895 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Negative value cast to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2896 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Negative value cast to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2897 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Negative value cast to an unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2898 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 415 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type. 2900 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2901 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2902 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2903 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Positive integer value truncated by cast to a smaller unsigned type. 2905 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 416 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2906 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Positive integer value truncated by cast to a smaller unsigned type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2907 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Positive integer value truncated by cast to a smaller un- signed type. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2908 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Wraparound in unsigned arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2911 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 417 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Wraparound in unsigned arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2912 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Wraparound in unsigned arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2913 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2921 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2922 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 418 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Left shift operation on expression of unsigned type results in loss of high order bits. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2923 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Computing an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2931 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Computing an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2932 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Computing an invalid pointer value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2933 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 419 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Possible: Computing an invalid pointer value. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2934 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Constant: Result of implicit conversion is only representable in a two’s complement implementation. 2940 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2941 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2942 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Result of implicit conversion is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2943 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 420 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Constant: Result of cast is only representable in a two’s complement implementation. 2945 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Definite: Result of cast is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2946 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Result of cast is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2947 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Result of cast is only representable in a two’s complement implementation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2948 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 421 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Definite: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2951 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2952 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Negative value used in array subscript or pointer arithmetic operation. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2953 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Using object ’%s’ with tainted value. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2956 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 422 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Possible: Using object ’%s’ with tainted value. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2959 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Using value of uninitialized automatic object ’%s’. Ticket(s): 21192 Fixed false negatives for checking of unset variables for cases where an uninitialized variable is used subsequently to being passed by reference to a function. 22873 Fixed false positive for message 2961 for cases when structure is passed as argument to a function with void pointer parameter and initialised within the function. 23458 Dataflow modelling of pointers and members of structures/u- nions has been improved in order to address false positives for a number of messages. 2961 23576 QAC will now correctly handle constructs involving both gcc statement expressions and initialisers. See also ticket 24111. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 24111 Fixed false positive for message 2961 for constructs involving both gcc statement expressions and initialisers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 423 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Using value of uninitialized automatic object ’%s’. Ticket(s): 21192 Fixed false negatives for checking of unset variables for cases where an uninitialized variable is used subsequently to being passed by reference to a function. 23458 Dataflow modelling of pointers and members of structures/u- nions has been improved in order to address false positives for 2962 a number of messages. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Using value of uninitialized automatic object ’%s’. Ticket(s): 23458 Dataflow modelling of pointers and members of structures/u- nions has been improved in order to address false positives for a number of messages. 23615 False negatives and postives as a result Ticket 22180. See Full 2963 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Some members of object ’%s’ are uninitialized. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2966 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 424 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Apparent: Some members of object ’%s’ are uninitialized. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2967 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Some members of object ’%s’ are uninitialized. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2968 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 23912 Fixed false negative for message 2971 when the address of a 2971 struct within a union is passed as an argument to a function for which the parameter is declared as a pointer to const. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Passing address of uninitialized object ’%s’ to a function pa- rameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2972 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 425 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Suspicious: Passing address of uninitialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2973 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Definite: Passing address of partially initialized object ’%s’ to a function parameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2976 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Apparent: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2977 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis Suspicious: Passing address of partially initialized object ’%s’ to a func- tion parameter declared as a pointer to const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2978 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 426 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The value of this function parameter is never used before being modi- fied. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2980 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This initialization is redundant. The value of this object is never used before being modified. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2981 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This assignment is redundant. The value of this object is never used before being modified. Ticket(s): 24152 The performance of Dataflow is improved for cases where anal- 2982 ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This assignment is redundant. The value of this object is never subse- quently used. Ticket(s): 22230 QAC will no longer incorrectly generate messages that relate to objects not being used when those objects are actually used to 2983 initialise members of structures/unions or elements of arrays. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 427 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description This operation is redundant. The value of the result is always ’%1s’. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2984 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This operation is redundant. The value of the result is always that of the left-hand operand. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2985 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This operation is redundant. The value of the result is always that of the right-hand operand. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. 2986 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The value of this loop controlling expression is always ’true’. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2990 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 428 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The value of this ’if’ controlling expression is always ’true’. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2991 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The value of this ’if’ controlling expression is always ’false’. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2992 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The value of this ’do - while’ loop controlling expression is always ’false’. The loop will only be executed once. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2993 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 429 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The value of this ’while’ or ’for’ loop controlling expression is always ’false’. The loop will not be entered. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2994 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The result of this logical operation is always ’true’. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2995 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis The result of this logical operation is always ’false’. Ticket(s): 23561 Fixed incorrect computation of address of structures that contain a pointer to themselves. 23615 False negatives and postives as a result Ticket 22180. See Full 2996 Support for Designated Initializers. 24152 The performance of Dataflow is improved for cases where anal- ysis of header functions and inter-function analysis is enabled and the headers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_func- tions option has been changed, see Header Function Analysis This character constant is being interpreted as a NULL pointer con- stant. 3003 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 430 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description This integral constant expression is being interpreted as a NULL pointer constant. Ticket(s): 3004 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. This preprocessing directive has been ignored because it lies within a #pragma block. #pragma ’%s’ expected. Ticket(s): 3106 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Null statement is located close to other code or comments. Ticket(s): 24397 Tokens ignored using the _ignore*/_munch* annotations will be 3138 considered for the purposes of layout checking, in particular when examining a null statement to see if it is obscured by text on the same line. In these circumstances any of message 3138, 3139 and 3141 will be generated instead of message 3140. Null statement is obscured by code or comment on the same line. Ticket(s): 24397 Tokens ignored using the _ignore*/_munch* annotations will be 3139 considered for the purposes of layout checking, in particular when examining a null statement to see if it is obscured by text on the same line. In these circumstances any of message 3138, 3139 and 3141 will be generated instead of message 3140. Null statement occurs on a line by itself. Ticket(s): 24397 Tokens ignored using the _ignore*/_munch* annotations will be 3140 considered for the purposes of layout checking, in particular when examining a null statement to see if it is obscured by text on the same line. In these circumstances any of message 3138, 3139 and 3141 will be generated instead of message 3140. Null statement does not occur on a line by itself. Ticket(s): 24397 Tokens ignored using the _ignore*/_munch* annotations will be 3141 considered for the purposes of layout checking, in particular when examining a null statement to see if it is obscured by text on the same line. In these circumstances any of message 3138, 3139 and 3141 will be generated instead of message 3140. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 431 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The variable ’%s’ is set but never used. Ticket(s): 3203 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers The variable ’%s’ is only set once and so it could be declared with the ’const’ qualifier. Ticket(s): 3204 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. File scope static, ’%s’, is never modified. It could be declared const. Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full 3232 Support for Designated Initializers. 23775 Fixed false positive for message 3232 for an assignment to a non-const pointer member in initialisation of a structure. File scope static, ’%s’, is not explicitly initialized but its value is used. Ticket(s): 3233 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. ’#else’/’#elif’/’#endif’ in included file matched ’#if...’ in parent file. This is probably an error. Ticket(s): 3318 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Controlling expression is not an ’essentially Boolean’ expression. Ticket(s): 3344 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers This sequence of operators is difficult to read without intervening spaces. Ticket(s): 3403 24380 Message 3403 will be generated also when the ’!=’ operator is directly followed by another operator, without white-spaces sep- arating the two operators. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 432 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Macro parameter not enclosed in (). Ticket(s): 24376 Message 3410 will not be generated when the occurrence of a 3410 macro parameter in a macro replacement list is preceded by the identifier of a type, even if that type happens to be defined using a typedef. Macro defines an unrecognized code-fragment. Ticket(s): 24398 Message 3459 will be generated instead of message 3412 whenever a macro replacement list contains a do-while-zero 3412 statement, even its loop body is a single statement (not enclosed in curly brackets). Message 1021 will be generated instead of message 3412 when a macro replacement list contains a state- ment expression (note that statement expressions are a GCC language extension). Right hand operand of ’&&’ or ’||’ is an expression with possible side effects. 3415 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Logical operation performed on expression with possible side effects. Ticket(s): 3416 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Expression with possible side effects is used in an initializer list. Ticket(s): 23581 When a struct/union/array is initialised with an initialiser list, 3421 messages 1291, 1398 and 3421 will be generated against the initialiser’s expression they refer to, instead of the subsequent token (comma or curly bracket). A function-like macro is being defined. Ticket(s): 3429 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Macro argument expression may require parentheses. Ticket(s): 3430 24399 Message 3430 will be generated against each applicable macro argument instead of once only against the macro invocation. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 433 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Parameter ’%s’ occurs more than once in the replacement list of this macro. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and 3435 C++ analyzers. 24381 Messages 3435 and 3456 will be generated against each appli- cable macro parameter, instead of only against the first applica- ble macro parameter encountered in the macro parameter list. Note that message 3435 is an obsolete message. Macro definition hides previously declared identifier. Ticket(s): 3436 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Macro redefines a keyword. Ticket(s): 3439 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Macro ’%s’ has a replacement list which appears recursive. Ticket(s): 3443 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. The 2nd or 3rd operand of this conditional operator is an expression with possible side effects. 3446 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Declaration of typedef ’%s’ is not in a header file although it is used in a definition or declaration with external linkage. Ticket(s): 24198 QAC analysis will no longer abort with a SIGSEGV fault under 3448 certain circumstances, which involve the definition of functions with parameters of pointer or array type, whose pointed-to type or element type is defined using a typedef, which in turn involves an array of pointers to a type that is also defined using a typedef. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 434 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Parameter ’%s’ will be evaluated more than once when this macro is used. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and 3456 C++ analyzers. 24381 Messages 3435 and 3456 will be generated against each appli- cable macro parameter, instead of only against the first applica- ble macro parameter encountered in the macro parameter list. Note that message 3435 is an obsolete message. Macro defines a ’do-while-zero’ construct. Ticket(s): 24398 Message 3459 will be generated instead of message 3412 whenever a macro replacement list contains a do-while-zero 3459 statement, even its loop body is a single statement (not enclosed in curly brackets). Message 1021 will be generated instead of message 3412 when a macro replacement list contains a state- ment expression (note that statement expressions are a GCC language extension). Using an initializer when defining an automatic object of struct, union or array type. 3604 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Using the ’#elif’ preprocessing directive. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. 3608 24382 Message 3608 will be generated against all occurrences of the ’#elif’ preprocessing directive; in particular it will also be gener- ated in certain situations where ’#elif’ directive happens to be preceded by another ’#if’ of ’#elif’ directive, whose expression evaluates to zero and which is not located within an outer ’#elif” or ’#else’ section. Macro ’%s’ is being defined more than once without using #undef to remove the previous definition. Ticket(s): 3614 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 435 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Using ’entry’ as an identifier. Ticket(s): 3615 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Whitespace used after ’#’ at the start of this preprocessing directive. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. 3618 24383 Messages 3618 and 3619 will be generated irrespective of where the applicable directive is located; in particular they will also be generated in certain situations where the directive is lo- cated in an ’#elif’ or ’#else’ section which is excluded because the expression of an earlier ’#if’ or ”#elif’ directive evaluates to one.,3618,3619„„„ Whitespace used before ’#’ at the start of this preprocessing directive. Ticket(s): 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. 3619 24383 Messages 3618 and 3619 will be generated irrespective of where the applicable directive is located; in particular they will also be generated in certain situations where the directive is lo- cated in an ’#elif’ or ’#else’ section which is excluded because the expression of an earlier ’#if’ or ”#elif’ directive evaluates to one.,3618,3619„„„ Octal escape sequences used in a character constant or string literal. Ticket(s): 3628 20272 Message locations have been improved as part of restructuring to enable future use of a preprocessor common to both C and C++ analyzers. Using a typedef for an array of unknown size can lead to unexpected results. 3651 Ticket(s): 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Designators are used to initialize an array of unspecified size. Ticket(s): 3676 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 436 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: char to signed char. Ticket(s): 3700 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to unsigned char. Ticket(s): 3701 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to short. Ticket(s): 3702 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to unsigned short. Ticket(s): 3703 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to int. Ticket(s): 3704 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to unsigned int. Ticket(s): 3705 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to long. Ticket(s): 3706 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to unsigned long. Ticket(s): 3707 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to float. Ticket(s): 3708 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to double. Ticket(s): 3709 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 437 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: char to long double. Ticket(s): 3710 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to char. Ticket(s): 3711 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to signed char. Ticket(s): 3712 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to short. Ticket(s): 3713 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to int. Ticket(s): 3715 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to long. Ticket(s): 3717 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to float. Ticket(s): 3719 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to double. Ticket(s): 3720 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned char to long double. Ticket(s): 3721 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to char. Ticket(s): 3722 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 438 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: signed char to unsigned char. Ticket(s): 3723 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to unsigned short. Ticket(s): 3725 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to unsigned int. Ticket(s): 3727 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to unsigned long. Ticket(s): 3729 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to float. Ticket(s): 3730 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to double. Ticket(s): 3731 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to long double. Ticket(s): 3732 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to char. Ticket(s): 3733 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to signed char. Ticket(s): 3734 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to unsigned char. Ticket(s): 3735 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 439 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: short to unsigned short. Ticket(s): 3736 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to unsigned int. Ticket(s): 3738 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to unsigned long. Ticket(s): 3740 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to float. Ticket(s): 3741 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to double. Ticket(s): 3742 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to long double. Ticket(s): 3743 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to char. Ticket(s): 3744 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to signed char. Ticket(s): 3745 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to unsigned char. Ticket(s): 3746 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to short. Ticket(s): 3747 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 440 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: unsigned short to int. Ticket(s): 3748 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to long. Ticket(s): 3750 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to float. Ticket(s): 3752 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to double. Ticket(s): 3753 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to long double. Ticket(s): 3754 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to char. Ticket(s): 3755 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to signed char. Ticket(s): 3756 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to unsigned char. Ticket(s): 3757 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to short. Ticket(s): 3758 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to unsigned short. Ticket(s): 3759 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 441 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: int to unsigned int. Ticket(s): 3760 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to unsigned long. Ticket(s): 3762 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to float. Ticket(s): 3763 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to double. Ticket(s): 3764 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to long double. Ticket(s): 3765 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to char. Ticket(s): 3766 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to signed char. Ticket(s): 3767 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to unsigned char. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, 3768 so that subsequent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. Implicit conversion: unsigned int to short. Ticket(s): 3769 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 442 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: unsigned int to unsigned short. Ticket(s): 3770 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to int. Ticket(s): 3771 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to long. Ticket(s): 3772 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to float. Ticket(s): 3774 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to double. Ticket(s): 3775 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to long double. Ticket(s): 3776 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to char. Ticket(s): 3777 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to signed char. Ticket(s): 3778 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to unsigned char. Ticket(s): 3779 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to short. Ticket(s): 3780 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 443 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: long to unsigned short. Ticket(s): 3781 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to int. Ticket(s): 3782 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to unsigned int. Ticket(s): 3783 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to unsigned long. Ticket(s): 3784 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to float. Ticket(s): 3785 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to double. Ticket(s): 3786 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to long double. Ticket(s): 3787 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to char. Ticket(s): 3788 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to signed char. Ticket(s): 3789 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to unsigned char. Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support 3790 for Designated Initializers 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 444 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: unsigned long to short. Ticket(s): 3791 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to unsigned short. Ticket(s): 3792 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to int. Ticket(s): 3793 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to unsigned int. Ticket(s): 3794 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to long. Ticket(s): 3795 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to float. Ticket(s): 3796 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to double. Ticket(s): 3797 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to long double. Ticket(s): 3798 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to char. Ticket(s): 3799 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to signed char. Ticket(s): 3800 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 445 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: float to unsigned char. Ticket(s): 3801 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to short. Ticket(s): 3802 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to unsigned short. Ticket(s): 3803 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to int. Ticket(s): 3804 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to unsigned int. Ticket(s): 3805 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to long. Ticket(s): 3806 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to unsigned long. Ticket(s): 3807 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to char. Ticket(s): 3810 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to signed char. Ticket(s): 3811 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to unsigned char. Ticket(s): 3812 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 446 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: double to short. Ticket(s): 3813 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to unsigned short. Ticket(s): 3814 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to int. Ticket(s): 3815 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to unsigned int. Ticket(s): 3816 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to long. Ticket(s): 3817 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to unsigned long. Ticket(s): 3818 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to float. Ticket(s): 3819 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to char. Ticket(s): 3821 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to signed char. Ticket(s): 3822 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to unsigned char. Ticket(s): 3823 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 447 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: long double to short. Ticket(s): 3824 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to unsigned short . Ticket(s): 3825 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to int. Ticket(s): 3826 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to unsigned int. Ticket(s): 3827 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to long. Ticket(s): 3828 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to unsigned long. Ticket(s): 3829 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to float. Ticket(s): 3830 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to double. Ticket(s): 3831 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to long long. Ticket(s): 3832 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: char to unsigned long long. Ticket(s): 3833 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 448 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: unsigned char to long long. Ticket(s): 3834 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: signed char to unsigned long long. Ticket(s): 3837 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: short to unsigned long long. Ticket(s): 3839 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned short to long long. Ticket(s): 3840 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: int to unsigned long long. Ticket(s): 3843 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned int to long long. Ticket(s): 3844 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long to unsigned long long. Ticket(s): 3847 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long to long long. Ticket(s): 3848 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to char. Ticket(s): 3850 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to signed char. Ticket(s): 3851 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 449 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: long long to unsigned char. Ticket(s): 3852 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to short. Ticket(s): 3853 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to unsigned short. Ticket(s): 3854 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to int. Ticket(s): 3855 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to unsigned int. Ticket(s): 3856 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to long Ticket(s): 3857 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to unsigned long. Ticket(s): 3858 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to unsigned long long. Ticket(s): 3859 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to float. Ticket(s): 3860 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long long to double. Ticket(s): 3861 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 450 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: long long to long double. Ticket(s): 3862 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to char. Ticket(s): 3863 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to signed char. Ticket(s): 3864 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to unsigned char. Ticket(s): 3865 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to short. Ticket(s): 3866 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to unsigned short. Ticket(s): 3867 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to int. Ticket(s): 3868 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to unsigned int. Ticket(s): 3869 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to long. Ticket(s): 3870 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to unsigned long. Ticket(s): 3871 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 451 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description Implicit conversion: unsigned long long to long long. Ticket(s): 3872 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to float. Ticket(s): 3873 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to double. Ticket(s): 3874 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: unsigned long long to long double. Ticket(s): 3875 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to long long. Ticket(s): 3876 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: float to unsigned long long. Ticket(s): 3877 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to long long. Ticket(s): 3878 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: double to unsigned long long. Ticket(s): 3879 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to long long. Ticket(s): 3880 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Implicit conversion: long double to unsigned long long. Ticket(s): 3881 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 452 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description The result of this cast is implicitly converted to another type. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, 3892 so that subsequent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. An expression of ’essentially Boolean’ type (%1s) is being cast to char- acter type ’%2s’. 4301 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being cast to enum type ’%2s’. 4302 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being cast to signed type ’%2s’. 4303 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being cast to un- signed type ’%2s’. 4304 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being cast to float- ing type ’%2s’. 4305 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being cast to Boolean type, ’%2s’. 4310 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 453 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression of ’essentially character’ type (%1s) is being cast to enum type, ’%2s’. 4312 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being cast to float- ing type, ’%2s’. 4315 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being cast to Boolean type, ’%2s’. 4320 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being cast to a differ- ent enum type, ’%2s’. 4322 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being cast to floating type, ’%2s’. 4325 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially signed’ type (%1s) is being cast to Boolean type ’%2s’. 4330 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially signed’ type (%1s) is being cast to enum type, ’%2s’. 4332 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially unsigned’ type (%1s) is being cast to Boolean type ’%2s’. 4340 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 454 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression of ’essentially unsigned’ type (%1s) is being cast to enum type ’%2s’. 4342 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being cast to Boolean type ’%2s’. 4350 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being cast to char- acter type ’%2s’. 4351 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being cast to enum type, ’%2s’. 4352 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially signed’ type (%1s) is being cast to a wider signed type, ’%2s’. 4390 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially unsigned’ type (%1s) is being cast to a wider unsigned type, ’%2s’. 4391 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially floating’ type (%1s) is being cast to a wider floating type, ’%2s’. 4392 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially signed’ type (%1s) is being cast to a different type category, ’%2s’. 4393 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 455 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description A composite expression of ’essentially unsigned’ type (%1s) is being cast to a different type category, ’%2s’. 4394 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially floating’ type (%1s) is being cast to a different type category, ’%2s’. 4395 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being converted to character type, ’%2s’ on assignment. 4401 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4402 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4403 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4404 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially Boolean’ type (%1s) is being converted to floating type, ’%2s’ on assignment. 4405 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4410 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 456 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression of ’essentially character’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4412 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4413 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4414 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially character’ type (%1s) is being converted to floating type, ’%2s’ on assignment. 4415 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4420 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being converted to character type, ’%2s’ on assignment. 4421 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being converted to a different enum type, ’%2s’ on assignment. 4422 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially enum’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4423 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 457 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression of ’essentially enum’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. Ticket(s): 4424 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. An expression of ’essentially enum’ type (%1s) is being converted to floating type, ’%2s’ on assignment. 4425 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially signed’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4430 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially signed’ type (%1s) is being converted to character type, ’%2s’ on assignment. 4431 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially signed’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4432 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially signed’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4434 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially signed’ type (%1s) is being converted to floating type, ’%2s’ on assignment. 4435 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of ’essentially signed’ type (%1s) is being con- verted to unsigned type, ’%2s’ on assignment. 4436 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 458 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description A constant expression of ’essentially signed’ type (%1s) is being con- verted to floating type, ’%2s’ on assignment. 4437 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially unsigned’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4440 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially unsigned’ type (%1s) is being converted to character type, ’%2s’ on assignment. 4441 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially unsigned’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4442 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to a wider signed type, ’%2s’ on assignment. 4443 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially unsigned’ type (%1s) is being converted to floating type, ’%2s’ on assignment. 4445 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4446 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of ’essentially unsigned’ type (%1s) is being con- verted to signed type, ’%2s’ on assignment. 4447 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 459 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression of ’essentially floating’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4450 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being converted to character type, ’%2s’ on assignment. 4451 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being converted to enum type, ’%2s’ on assignment. 4452 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4453 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression of ’essentially floating’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4454 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially signed’ type (%1s) is being converted to narrower signed type, ’%2s’ on assignment. 4460 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to narrower unsigned type, ’%2s’ on assignment. Ticket(s): 23547 The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, 4461 so that subsequent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. 23615 False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 460 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description A non-constant expression of ’essentially floating’ type (%1s) is being converted to narrower floating type, ’%2s’ on assignment. 4462 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of ’essentially signed’ type (%1s) is being con- verted to narrower signed type, ’%2s’ on assignment. 4463 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of ’essentially unsigned’ type (%1s) is being con- verted to narrower unsigned type, ’%2s’ on assignment. 4464 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A constant expression of ’essentially floating’ type (%1s) is being con- verted to narrower floating type, ’%2s’ on assignment. 4465 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially signed’ type (%1s) is being con- verted to wider signed type, ’%2s’ on assignment. 4490 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially unsigned’ type (%1s) is being converted to wider unsigned type, ’%2s’ on assignment. 4491 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers A composite expression of ’essentially floating’ type (%1s) is being con- verted to wider floating type, ’%2s’ on assignment. 4492 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers An expression which is the result of a ~ or << operation has been con- verted to a different essential type category on assignment. 4498 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 461 Programming Research Ltd.

Table 3.12 – continued from previous page Msg. Id. Description An expression which is the result of a ~ or << operation has been con- verted to a wider essential type on assignment. 4499 Ticket(s): 23614 Location changes as a result of Ticket 22180. See Full Support for Designated Initializers

3.5.3 Message Text Changes

The following table summarizes message text changes.

Table 3.13: Changed Message Text for QA·C 9.2.0

Msg. Message Text Change Ticket Id. QAC-9.2.0 Definite: Calling a standard library character handling 23615 function with an invalid character value. 23794 2796 QAC-9.1.0 Definite: Calling a standard library function with an in- 23796 valid character value. 24152 QAC-9.2.0 Apparent: Calling a standard library character handling 23615 function with an invalid character value. 23794 2797 QAC-9.1.0 Apparent: Calling a standard library function with an in- 23796 valid character value. 24152 QAC-9.2.0 Suspicious: Calling a standard library character han- 23615 dling function with an invalid character value. 23794 2798 QAC-9.1.0 Suspicious: Calling a standard library function with an 23796 invalid character value. 24152 QAC-9.2.0 Possible: Calling a standard library character handling 23794 function with an invalid character value. 2799 23796 QAC-9.1.0 Possible: Calling a standard library function with an in- 24152 valid character value.

3.6 Messages for QA·C 9.1.1

3.6.1 New Messages

The following table lists messages which are new in QA·C 9.1.1.

RELEASE NOTES : QA·C 9.4.1 Page 462 Programming Research Ltd.

Table 3.14: Messages Added for QA·C 9.1.1 Msg. Id. Description Justification comments are not allowed in location annotations. 4816 23502 Ability to add Justification Reason to Comment Based Suppres- sions and Include in Report Justification comments are not allowed to be empty. 4817 23502 Ability to add Justification Reason to Comment Based Suppres- sions and Include in Report

3.6.2 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

Table 3.15: Messages Modified for QA·C 9.1.1

Msg. Id. Description [S] Unexpected token. 24104 When the -ex asm configuration option is specified, the asm lan- guage extension will be properly handled even if the source code 0907 relies on additional language extensions for nested functions or statement expressions. Consequently in these circumstances syntax errors and recovery actions will no longer be reported. Inserted ’%s’ token in an attempt to continue parsing. 24104 When the -ex asm configuration option is specified, the asm lan- guage extension will be properly handled even if the source code 0911 relies on additional language extensions for nested functions or statement expressions. Consequently in these circumstances syntax errors and recovery actions will no longer be reported. Source skipped to this point after error in expression. 24104 When the -ex asm configuration option is specified, the asm lan- guage extension will be properly handled even if the source code 0920 relies on additional language extensions for nested functions or statement expressions. Consequently in these circumstances syntax errors and recovery actions will no longer be reported. [S] Expected:%s. 24104 When the -ex asm configuration option is specified, the asm lan- guage extension will be properly handled even if the source code 0926 relies on additional language extensions for nested functions or statement expressions. Consequently in these circumstances syntax errors and recovery actions will no longer be reported. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 463 Programming Research Ltd.

Table 3.15 – continued from previous page Msg. Id. Description Indentation of this line is to the left of the line above. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2200 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. This indentation is not consistent with previous indentation in this file. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2201 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. This closing brace is not aligned appropriately with the matching open- ing brace. 23664 Indent checker reworked to remove false positives and clarify be- 2203 havior of messages. 2200, 2201 and 2211 significantly changed by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. ’%s’ is not aligned to match its controlling ’switch’ statement. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2204 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. This brace style is not consistent with ’K&R’ style. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2207 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. This brace style is not consistent with ’indented’ style. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2208 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 464 Programming Research Ltd.

Table 3.15 – continued from previous page Msg. Id. Description This brace style is not consistent with ’exdented’ style. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2209 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. ’%s’ is not aligned with the previously declared identifier. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2211 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. Body of control statement is not enclosed within braces. 2212 23611 Messages 2212 and 2214 restored to pre-9.1 behavior: no false positive on braces contained within macros. Matching braces appear on the same line - proper indentation would be preferred. 23664 Indent checker reworked to remove false positives and clarify be- 2213 havior of messages. 2200, 2201 and 2211 significantly changed by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. Body of control statement is on the same line and is not enclosed within braces. 2214 23611 Messages 2212 and 2214 restored to pre-9.1 behavior: no false positive on braces contained within macros. This indentation is not consistent with configured depth. 23664 Indent checker reworked to remove false positives and clarify be- havior of messages. 2200, 2201 and 2211 significantly changed 2215 by removing false positives/negatives; indent-related messages are no longer emitted in the event of an unrecoverable parse failure. As a result of error message ’%s’, dataflow analysis of the remainder of this function is not possible. 2753 23818 Dataflow no longer disabled for code that contains an instance of diagnostics 3237 or 3238. [C] inline function ’%1s’ has external linkage and is defining an object, ’%2s’, with static storage duration. 3237 23818 Dataflow no longer disabled for code that contains an instance of diagnostics 3237 or 3238. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 465 Programming Research Ltd.

Table 3.15 – continued from previous page Msg. Id. Description [C] inline function ’%1s’ has external linkage and is referring to an ob- ject, ’%2s’, with internal linkage. 3238 23818 Dataflow no longer disabled for code that contains an instance of diagnostics 3237 or 3238.

3.7 Messages for QA·C 9.1.0

3.7.1 New Messages

The following table lists messages which are new in QA·C 9.1.0.

Table 3.16: Messages Added for QA·C 9.1.0

Msg. Id. Description [C] The keyword static is used in the declaration of the index of an array which is not a function parameter. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 0460 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. [C] The keyword static is used in the declaration of an inner index of a multi-dimensional array. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 0461 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 466 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description [C] A type qualifier (const, volatile or restrict) is used in the declaration of the index of an array which is not a function parameter. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 0462 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. [C] A type qualifier (const, volatile or restrict) is used in the declaration of an inner index of a multi-dimensional array. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 0463 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. [C] The restrict qualifier can only be applied to pointer types derived from object or incomplete types. 14130 The C99 ’restrict’ type qualifier will be parsed and treated as a keyword (consistently with e.g. ’inline’ and ’_Bool’). A new message 1057 will be generated to report occurrences of the C99 ’restrict’ type qualifier. Another new message 0669 will be generated to report constraint errors in the usage of ’restrict’. Note: syntax errors may be generated for C90 source code if the token ’restrict’ happens to be used as an identifier instead of a keyword. In this case either the source code should be up- dated or QAC should be configured to define ’restrict’ as a macro 0669 for a C99 compliant identifier. Note: for source code that uses the C99 ’restrict’ type qualifier it will no longer be necessary for QAC to be configured to define ’restrict’ as a blank macro. Note: MISRA C:2012 rule 8.14 requires the restrict type qualifier not to be used. However, MISRA rules do not apply to the Standard C Library. If message 1057 is used for the purpose of MISRA compliance, it will be up to QAC configuration to suppress it for the applicable files/functions. 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 467 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description [U] Assignment between two incompatible members of the same union. 23067 A new message 0681 will be generated when an assignment operation is performed between different members of the same union, except when (1) the two members have compatible types 0681 and overlap exactly, or (2) either or both members are accessed via pointers. Note: dataflow analysis is required to handle ac- cess via pointers, and these cases are already covered by com- plementary dataflow messages 2776, 2777 and 2778. Argument for memory size does not refer to ’sizeof (%s)’. 15753 New message will be generated to report when a dynamic mem- 0701 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Identifier ’%s’ is also used as a macro name. 0784 15716 New messages 0784, 0785, 0786 & 0787 when identifiers are not distinct from macro names. Identifier matches other macro name(s) (e.g. ’%s’) in first 31 characters. 0785 15716 New messages 0784, 0785, 0786 & 0787 when identifiers are not distinct from macro names. Identifier matches other macro name(s) (e.g. ’%s’) in first 63 characters. 0786 15716 New messages 0784, 0785, 0786 & 0787 when identifiers are not distinct from macro names. Identifier does not differ from other macro name(s) (e.g. ’%s’) within the specified number of significant characters. 0787 15716 New messages 0784, 0785, 0786 & 0787 when identifiers are not distinct from macro names. This identifier, ’%s’, is used as both a macro name and a function-like macro parameter name. 23210 Existing messages 0778 and 0779 will be extended and new messages 0788 and 0789 will be generated to report conflicts involving macro identifiers which do not differ from each other (or 0788 from tokens that they should not replace) within the first 31 char- acters (C90), the first 63 characters (C99) or the specified num- ber of significant characters. Note that this upgrade will support coverage/enforcement of MISRA C:2012 Rule 5.4 and MISRA C-2004 Rule 5.1. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 468 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Identifier matches other identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. 23210 Existing messages 0778 and 0779 will be extended and new messages 0788 and 0789 will be generated to report conflicts involving macro identifiers which do not differ from each other (or 0789 from tokens that they should not replace) within the first 31 char- acters (C90), the first 63 characters (C99) or the specified num- ber of significant characters. Note that this upgrade will support coverage/enforcement of MISRA C:2012 Rule 5.4 and MISRA C-2004 Rule 5.1. This macro parameter is preceded by ’#’ and followed by ’##’. 14127 A new message 0892 will be generated when the occurrence of 0892 a macro parameter in a macro replacement list is immediately preceded by the stringify operator ’#’ and immediately followed by the glue operator ’##’. Macro parameter ’%s’ is inconsistently subject to macro replacement. 14128 A new message 0893 will be generated when a macro param- eter: (1) is used as an operand of the stringify ’#’ or glue ’##’ 0893 operators, hence not subject to macro replacement, and (2) is also used otherwise, hence subject to macro replacement, in the same macro definition, and (3) the corresponding argument in a macro invocation is subject to macro replacement. #%s directive controlling expression does not evaluate to zero or one. 23298 A new message 0894 will be generated when the controlling ex- 0894 pression of a #if or #elif preprocessing directive does not eval- uate to 0 or 1. Note that this upgrade will cover MISRA C:2012 Rule 20.8. [E] Treating array of length one as potentially flexible member. 1039 20747 Support for C99 flexible array feature will be improved. [E] Nested functions are a language extension. 22691 The GCC extension to the C language for nested function will be recognised, a new message 1049 will be generated for each 1049 nested function definition, and syntax and constraint errors will not be incorrectly generated. Another new message 1050 will be generated when a nested function is declared with incorrect storage class specifiers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 469 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description [C] Nested functions cannot be ’extern’ or ’static’. 22691 The GCC extension to the C language for nested function will be recognised, a new message 1049 will be generated for each 1050 nested function definition, and syntax and constraint errors will not be incorrectly generated. Another new message 1050 will be generated when a nested function is declared with incorrect storage class specifiers. [C99] The keyword ’restrict’ has been used. 14130 The C99 ’restrict’ type qualifier will be parsed and treated as a keyword (consistently with e.g. ’inline’ and ’_Bool’). A new message 1057 will be generated to report occurrences of the C99 ’restrict’ type qualifier. Another new message 0669 will be generated to report constraint errors in the usage of ’restrict’. Note: syntax errors may be generated for C90 source code if the token ’restrict’ happens to be used as an identifier instead of a keyword. In this case either the source code should be up- 1057 dated or QAC should be configured to define ’restrict’ as a macro for a C99 compliant identifier. Note: for source code that uses the C99 ’restrict’ type qualifier it will no longer be necessary for QAC to be configured to define ’restrict’ as a blank macro. Note: MISRA C:2012 rule 8.14 requires the restrict type qualifier not to be used. However, MISRA rules do not apply to the Standard C Library. If message 1057 is used for the purpose of MISRA compliance, it will be up to QAC configuration to suppress it for the applicable files/functions. [C99] The keyword ’static’ is used in the declaration of a function pa- rameter of array type. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 1058 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 470 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description [C99] A type qualifier (const, volatile or restrict) is used in the declara- tion of a function parameter of array type. 20396 QAC will be able to parse the C99 syntax for the static key- word and type qualifiers (const, volatile and restrict), which ap- 1059 plies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new constraint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. [C99] A flexible array member has been declared. 12042 A new message 1060 will be generated instead of constraint er- ror message 0642 when a structure with a flexible array member is declared. Flexible array members are a feature introduced by 1060 the C99 standard. New messages 1061 and 1062 will also re- port constraint errors when a structure with a flexible array mem- ber (and any union containing, possibly recursively, a member that is such a structure) is a member of a structure or an ele- ment of an array. [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of structure member ’%3s’. 12042 A new message 1060 will be generated instead of constraint er- ror message 0642 when a structure with a flexible array member is declared. Flexible array members are a feature introduced by 1061 the C99 standard. New messages 1061 and 1062 will also re- port constraint errors when a structure with a flexible array mem- ber (and any union containing, possibly recursively, a member that is such a structure) is a member of a structure or an ele- ment of an array. [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of array elements. 12042 A new message 1060 will be generated instead of constraint er- ror message 0642 when a structure with a flexible array member is declared. Flexible array members are a feature introduced by 1062 the C99 standard. New messages 1061 and 1062 will also re- port constraint errors when a structure with a flexible array mem- ber (and any union containing, possibly recursively, a member that is such a structure) is a member of a structure or an ele- ment of an array. [C99] ’%s’ is an automatically-allocated object of a type declared with a 1063 flexible array member. 20747 Support for C99 flexible array feature will be improved. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 471 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description [C99] ’%s’ is a statically-allocated object of a type declared with a flexi- 1064 ble array member. 20747 Support for C99 flexible array feature will be improved. [E] ’%s’ is an automatically-allocated object of a type declared with a 1065 potentially-flexible array member. 20747 Support for C99 flexible array feature will be improved. [E] ’%s’ is a statically-allocated object of a type declared with a 1066 potentially-flexible array member. 20747 Support for C99 flexible array feature will be improved. [C99] Union member ’%s’ is a struct declared with a flexible array mem- 1067 ber. 20747 Support for C99 flexible array feature will be improved. [E] Union member ’%s’ is a struct declared with a potentially-flexible 1068 array member. 20747 Support for C99 flexible array feature will be improved. [C99] Taking sizeof a struct with a flexible array member without adding 1069 the array size. 20747 Support for C99 flexible array feature will be improved. [E] Taking sizeof a struct with a potentially-flexible array member without 1070 explicitly adding an array size. 20747 Support for C99 flexible array feature will be improved. [C99] Taking sizeof a struct with a flexible array member without explic- 1071 itly adding the array size in terms of element sizes. 20747 Support for C99 flexible array feature will be improved. [E] Taking sizeof a struct with a potentially-flexible array member without 1072 explicitly adding an array size in terms of element sizes. 20747 Support for C99 flexible array feature will be improved. [C99] Taking sizeof a struct with a flexible array member while adding 1073 an array size based on the wrong element type. 20747 Support for C99 flexible array feature will be improved. [E] Taking sizeof a struct with a potentially-flexible array member while 1074 adding an array size based on the wrong element type. 20747 Support for C99 flexible array feature will be improved. Operand of sizeof is a function parameter of array type. 1321 22781 A new message 1321 will be generated to report when the operand of sizeof is a function parameter of array type. The parameter ’%s’ is being modified. 15711 A new message 1338 will be generated when a function param- eter is modified. When the address of operator ’&’ is applied to 1338 a function parameter, a new message 1339 will be generated if the resulting pointer is non const, and a new message 1340 will be generated if the resulting pointer is const. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 472 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Evaluating the address of the parameter ’%s’. 15711 A new message 1338 will be generated when a function param- eter is modified. When the address of operator ’&’ is applied to 1339 a function parameter, a new message 1339 will be generated if the resulting pointer is non const, and a new message 1340 will be generated if the resulting pointer is const. Storing the address of the parameter ’%s’ in a constant pointer. 15711 A new message 1338 will be generated when a function param- eter is modified. When the address of operator ’&’ is applied to 1340 a function parameter, a new message 1339 will be generated if the resulting pointer is non const, and a new message 1340 will be generated if the resulting pointer is const. Array element ’%s’ has already been initialized. 14118 New messages 1397, 1398 and 1399 will be generated to re- 1397 port situations where the use of C99 designated initialisers re- sults in multiple initialisations of array elements or struct/union members. Structure member ’%s’ has already been initialized. 14118 New messages 1397, 1398 and 1399 will be generated to re- 1398 port situations where the use of C99 designated initialisers re- sults in multiple initialisations of array elements or struct/union members. A union member has already been initialized. 14118 New messages 1397, 1398 and 1399 will be generated to re- 1399 port situations where the use of C99 designated initialisers re- sults in multiple initialisations of array elements or struct/union members. A pointer to a FILE object is dereferenced. 20397 Two new messages 1485 and 1486 will be generated to report respectively when an object of type pointer to FILE is derefer- enced and when it is explicitly or implicitly converted to a dif- 1485 ferent type. Note: these messages cover MISRA C:2012 Rule 22.5, which bans the dereferencing of pointer to FILE objects. Rule 22.5 is classed as undecidable, however the combination of messages 1485 and 1486 intentionally imposes stricter con- straints than Rule 22.5, so that their enforcement is decidable. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 473 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description A pointer to a FILE object is converted to a different type. 20397 Two new messages 1485 and 1486 will be generated to report respectively when an object of type pointer to FILE is derefer- enced and when it is explicitly or implicitly converted to a dif- 1486 ferent type. Note: these messages cover MISRA C:2012 Rule 22.5, which bans the dereferencing of pointer to FILE objects. Rule 22.5 is classed as undecidable, however the combination of messages 1485 and 1486 intentionally imposes stricter con- straints than Rule 22.5, so that their enforcement is decidable. Comparing the representations of objects of different types. 22779 A new message 1487 will be generated when the function ’memcmp’ is used to compare objects of differ- ent types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will 1487 be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point ob- jects or arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. Comparison of a struct object representation. 22779 A new message 1487 will be generated when the C standard library function ’memcmp’ is used to compare objects of differ- ent types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will 1488 be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point ob- jects or arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 474 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Comparison of a union object representation. 22779 A new message 1487 will be generated when the C standard library function ’memcmp’ is used to compare objects of differ- ent types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will 1489 be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point ob- jects or arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. Comparison of a floating point object representation. 22779 A new message 1487 will be generated when the C standard library function ’memcmp’ is used to compare objects of differ- ent types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will 1490 be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point ob- jects or arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. Comparison of an object representation. 22779 A new message 1487 will be generated when the C standard library function ’memcmp’ is used to compare objects of differ- ent types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will 1491 be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point ob- jects or arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 475 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description The result of library function ’%s’ is used to modify the referenced ob- ject. 1492 22782 New messages 1492 and 1493 will be generated when strings from getenv, localeconv, setlocale and strerror are modified. The result of library function ’%s’ is used as a pointer to a modifiable object. 1493 22782 New messages 1492 and 1493 will be generated when strings from getenv, localeconv, setlocale and strerror are modified. Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. 22785 New messages 2500, 2501, 2502 and 2503 will be generated when the zeroing of errno, the call to an errno setting func- tion and the testing of errno are not implemented in a strict se- quence. This analysis only applies to calls of C standard library 2500 functions which are by default errno setting functions, that is: ftell, strtoumax, strtod, wcstod, strtof, wcstof, strtoimax, strtol, wcstol, strtold, wcstold, strtoll, wcstoll, strtoul, wcstoul, strtoull, wcstoull, wcstoimax, wcstoumax, fgetpos, fsetpos, mbrtowc, mbsrtowcs, signal, wcrtomb, wcsrtombs, fgetwc and fputwc. Call to ’%s’ is not immediately followed by the testing of ’errno’. 22785 New messages 2500, 2501, 2502 and 2503 will be generated when the zeroing of errno, the call to an errno setting func- tion and the testing of errno are not implemented in a strict se- quence. This analysis only applies to calls of C standard library 2501 functions which are by default errno setting functions, that is: ftell, strtoumax, strtod, wcstod, strtof, wcstof, strtoimax, strtol, wcstol, strtold, wcstold, strtoll, wcstoll, strtoul, wcstoul, strtoull, wcstoull, wcstoimax, wcstoumax, fgetpos, fsetpos, mbrtowc, mbsrtowcs, signal, wcrtomb, wcsrtombs, fgetwc and fputwc. Zeroing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. 22785 New messages 2500, 2501, 2502 and 2503 will be generated when the zeroing of errno, the call to an errno setting func- tion and the testing of errno are not implemented in a strict se- 2502 quence. This analysis only applies to calls of C standard library functions which are by default errno setting functions, that is: ftell, strtoumax, strtod, wcstod, strtof, wcstof, strtoimax, strtol, wcstol, strtold, wcstold, strtoll, wcstoll, strtoul, wcstoul, strtoull, wcstoull, wcstoimax, wcstoumax, fgetpos, fsetpos, mbrtowc, mbsrtowcs, signal, wcrtomb, wcsrtombs, fgetwc and fputwc. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 476 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Testing of ’errno’ is not immediately preceded by a call to an ’errno’ setting function. 22785 New messages 2500, 2501, 2502 and 2503 will be generated when the zeroing of errno, the call to an errno setting func- tion and the testing of errno are not implemented in a strict se- 2503 quence. This analysis only applies to calls of C standard library functions which are by default errno setting functions, that is: ftell, strtoumax, strtod, wcstod, strtof, wcstof, strtoimax, strtol, wcstol, strtold, wcstold, strtoll, wcstoll, strtoul, wcstoul, strtoull, wcstoull, wcstoimax, wcstoumax, fgetpos, fsetpos, mbrtowc, mbsrtowcs, signal, wcrtomb, wcsrtombs, fgetwc and fputwc. Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis continues with the next query. 22813 A new message is generated when the time taken for Dataflow 2758 analysis of a query within a function is greater than the timeout limit set using the ’-po df::query_timeout=’ option. This message is generated when the option ’-po df::query_timeout_message’ is enabled in the QAC configuration. Definite: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 20191 New analysis to check array arguments passed to a function 2781 when a sized array is used as a function parameter. A message will be generated if an array passed as an argument to the func- tion does not have as many elements as the array declarator of the function parameter. Apparent: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 20191 New analysis to check array arguments passed to a function 2782 when a sized array is used as a function parameter. A message will be generated if an array passed as an argument to the func- tion does not have as many elements as the array declarator of the function parameter. Suspicious: Function argument has fewer elements than the array di- mension in the parameter declaration for non-inlined call. 20191 New analysis to check array arguments passed to a function 2783 when a sized array is used as a function parameter. A message will be generated if an array passed as an argument to the func- tion does not have as many elements as the array declarator of the function parameter. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 477 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Possible: Function argument has fewer elements than the array dimen- sion in the parameter declaration for non-inlined call. 20191 New analysis to check array arguments passed to a function 2784 when a sized array is used as a function parameter. A message will be generated if an array passed as an argument to the func- tion does not have as many elements as the array declarator of the function parameter. Definite: Calling a standard library function with an invalid character value. 22790 A new message will be generated if: - a value not representable as an "unsigned char" or EOF is passed to any function in 2796 or the functions putc, putchar, and ungetc. - a value not representable as an "wchar_t" or WEOF is passed to any function in or the functions putwc, putwchar, and ungetwc. Apparent: Calling a standard library function with an invalid character value. 22790 A new message will be generated if: - a value not representable as an "unsigned char" or EOF is passed to any function in 2797 or the functions putc, putchar, and ungetc. - a value not representable as an "wchar_t" or WEOF is passed to any function in or the functions putwc, putwchar, and ungetwc. Suspicious: Calling a standard library function with an invalid character value. 22790 A new message will be generated if: - a value not representable as an "unsigned char" or EOF is passed to any function in 2798 or the functions putc, putchar, and ungetc. - a value not representable as an "wchar_t" or WEOF is passed to any function in or the functions putwc, putwchar, and ungetwc. Possible: Calling a standard library function with an invalid character value. 22790 A new message will be generated if: - a value not representable as an "unsigned char" or EOF is passed to any function in 2799 or the functions putc, putchar, and ungetc. - a value not representable as an "wchar_t" or WEOF is passed to any function in or the functions putwc, putwchar, and ungetwc. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 478 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Definite: Using object ’%s’ with tainted value. 22791 A new message is generated when data from an external source 2956 (e.g. command line input, file, socket etc) is not checked to de- termine if it is a valid value, with respect to the expected limits of the value, before the value is used in subsequent expressions. Possible: Using object ’%s’ with tainted value. 22791 A new message is generated when data from an external source 2959 (e.g. command line input, file, socket etc) is not checked to de- termine if it is a valid value, with respect to the expected limits of the value, before the value is used in subsequent expressions. The tag ’%s’ is not used and could be removed. 15709 A new message 3213 will be generated to report an unused struct/union/enum tag. A new message 3214 will be generated 3213 to report an unused macro. Existing message 3205 will also be generated for unused enum constants defined at file scope in the source file. The macro ’%s’ is not used and could be removed. 15709 A new message 3213 will be generated to report an unused struct/union/enum tag. A new message 3214 will be generated 3214 to report an unused macro. Existing message 3205 will also be generated for unused enum constants defined at file scope in the source file. This ’goto’ statement involves a backward jump. 3310 21771 New message 3310 will be generated when a goto statement jumps to a label declared earlier in the same function. Expression with possible side effects is used in an initializer list. 3421 14117 A new message 3421 will be generated when expressions with possible side effects are used in initialiser lists. Octal escape sequence ’%s’ is not terminated. 14112 New messages 3636 and 3637 will be generated when octal 3636 or hexadecimal escape sequences are not followed by another escape sequence or the end of the character constant or string literal. Hexadecimal escape sequence ’%s’ is not terminated. 14112 New messages 3636 and 3637 will be generated when octal 3637 or hexadecimal escape sequences are not followed by another escape sequence or the end of the character constant or string literal. Designators are used to initialize an array of unspecified size. 14119 A new message 3676 will be generated when designated ini- 3676 tialisers are used to initialise an array object whose size is not explicitly specified. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 479 Programming Research Ltd.

Table 3.16 – continued from previous page Msg. Id. Description Operands of binary operator ’%1s’ have the same type ’%2s’ but distinct type names ’%3s’ and ’%4s’. 22496 A new message 4599 will be generated when a binary operator 4599 ’+’, ’-’, ’*’, ’/’, ’%’, ’&’, ’|’, ’^’, ’<’, ’<=’, ’>’, ’>=’, ’==’, ’!=’, ’?:’, ’=’, ’+=’, ’-=’, ’*=’, ’/=’, ’%=’, ’&=’, ’|=’ or ’^=’ is applied to two operands which are derived from the same integer type but have different type names.

3.7.2 Messages with Modified Behavior

The following table summarizes the messages whose behavior has been modified as a result of a change in specification.

Table 3.17: Messages Modified for QA·C 9.1.0

Msg. Id. Description [Q] Definition of size_t differs from configured type. 20522 Initial restructuring to enable future use of a preprocessor com- 0040 mon to both C and C++ analyzers, see Messages Location Changes. [Q] Definition of ptrdiff_t differs from configured type. 20522 Initial restructuring to enable future use of a preprocessor com- 0041 mon to both C and C++ analyzers, see Messages Location Changes. [Q] Definition of wchar_t differs from configured type. 20522 Initial restructuring to enable future use of a preprocessor com- 0042 mon to both C and C++ analyzers, see Messages Location Changes. [I] Cast between a pointer to object and an integral type. 11994 Support for semantics checks on statement expressions will be 0306 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Dangerous pointer cast results in loss of const qualification. 23432 Fix to correct analysis of casts that change the const qualifica- 0311 tion of pointers to qualified object types resulting in both false positive and false negative messages. Dangerous pointer cast results in loss of volatile qualification. 23432 Fix to correct analysis of casts that change the const qualifica- 0312 tion of pointers to qualified object types resulting in both false positive and false negative messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 480 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description [L] ’#include "%s"’ causes nesting to exceed 15 levels - program does not conform strictly to ISO:C99. 0388 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. [U] ’%s’ is modified and accessed between sequence points - evalua- tion order unspecified. 22555 Message 0402 will no longer be incorrectly generated in cer- 0402 tain circumstances where the left hand side of an assignment is enclosed in parentheses and involves access to a struct/union member via the dot or arrow operator. [S] The identifier ’%s’ has not been declared. 20522 Initial restructuring to enable future use of a preprocessor com- 0434 mon to both C and C++ analyzers, see Messages Location Changes. [C] The ’struct’/’union’ member ’%s’ does not exist. 22606 Designated initialisers referring to members in nested stuctures will be recognised even if their ordering does not reflect the or- 0435 dering in the structure definition. Consequently, under these cir- cumstances message 0435 will no longer be incorrectly gener- ated. [C] Left operand of ’.’ must be a ’struct’ or ’union’ object. 11994 Support for semantics checks on statement expressions will be 0436 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. [C] Right operand of assignment is not of compatible pointer type. 11994 Support for semantics checks on statement expressions will be 0563 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. This switch case label of ’essential type’ ’%1s’, is not consistent with a controlling expression of essential type ’%2s’. 0570 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. [C] Enumeration constant must be an integral constant expression. 22645 Messages 0589 and 0907 will no longer be incorrectly generated when an enumeration type is declared and the first enumeration 0589 constant to be initialised is initialised to an integer constant ex- pression that contains a cast to a type which is defined via a typedef. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 481 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Negative ’case’ label expression is incompatible with unsigned control- ling expression in ’switch’ statement. 0594 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. Type of ’case’ label expression is not consistent with type of controlling expression in ’switch’ statement. 0597 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. [C] ’%s’ in ’struct’ or ’union’ type may not be an array of unknown size. 12042 A new message 1060 will be generated instead of constraint er- ror message 0642 when a structure with a flexible array member is declared. Flexible array members are a feature introduced by 0642 the C99 standard. New messages 1061 and 1062 will also re- port constraint errors when a structure with a flexible array mem- ber (and any union containing, possibly recursively, a member that is such a structure) is a member of a structure or an ele- ment of an array. [S] Function defined with invalid function header syntax. 20522 Initial restructuring to enable future use of a preprocessor com- 0670 mon to both C and C++ analyzers, see Messages Location Changes. Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements. 0686 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. Array has been initialized using concatenated strings and has fewer initializers than its declared size. 0687 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. Array size determined by number of initializers which include concate- nated string literals. 0688 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 482 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description [U] ’%s()’ has been declared with a non void return type but ends with an implicit ’return ;’ statement. 0744 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. A ’break’ statement has been used to terminate an iteration statement. 11994 Support for semantics checks on statement expressions will be 0769 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A ’continue’ statement has been used. 11994 Support for semantics checks on statement expressions will be 0770 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. More than one ’break’ statement has been used to terminate this itera- tion statement. 0771 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. [L] External identifier matches other external identifier(s) (e.g. ’%s’) in first 6 characters - program does not conform strictly to ISO:C90. 0776 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. [U] External identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 0777 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 23210 Existing messages 0778 and 0779 will be extended and new messages 0788 and 0789 will be generated to report conflicts involving macro identifiers which do not differ from each other (or 0778 from tokens that they should not replace) within the first 31 char- acters (C90), the first 63 characters (C99) or the specified num- ber of significant characters. Note that this upgrade will support coverage/enforcement of MISRA C:2012 Rule 5.4 and MISRA C-2004 Rule 5.1. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 483 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 23210 Existing messages 0778 and 0779 will be extended and new messages 0788 and 0789 will be generated to report conflicts involving macro identifiers which do not differ from each other (or 0779 from tokens that they should not replace) within the first 31 char- acters (C90), the first 63 characters (C99) or the specified num- ber of significant characters. Note that this upgrade will support coverage/enforcement of MISRA C:2012 Rule 5.4 and MISRA C-2004 Rule 5.1. [L] ’#include "%s"’ causes nesting to exceed 8 levels - program does not conform strictly to ISO:C90. 0810 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. [S] Unexpected token. 22645 Messages 0589 and 0907 will no longer be incorrectly generated when an enumeration type is declared and the first enumeration 0907 constant to be initialised is initialised to an integer constant ex- pression that contains a cast to a type which is defined via a typedef. [C99] Trailing comma at the end of an enumerator-list. 20522 Initial restructuring to enable future use of a preprocessor com- 0930 mon to both C and C++ analyzers, see Messages Location Changes. [E] A statement expression is not supported in ISO C, and is treated as a language extension. 1021 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Suffixed integer constant implicitly converted to different integer type. 11994 Support for semantics checks on statement expressions will be 1252 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Unsuffixed integer constant implicitly converted to different integer type. 11994 Support for semantics checks on statement expressions will be 1253 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 484 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Using a non-int expression to define an enum constant. 22645 Messages 0589 and 0907 will no longer be incorrectly generated when an enumeration type is declared and the first enumeration 1271 constant to be initialised is initialised to an integer constant ex- pression that contains a cast to a type which is defined via a typedef. An integer constant is being converted to floating type on assignment. 1276 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. An integer constant of ’essentially signed’ type is being converted to unsigned type on assignment. 1290 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. An integer constant of ’essentially unsigned’ type is being converted to signed type on assignment. 1291 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An integer constant of ’essentially signed’ type is being converted to type char on assignment. 1292 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. An integer constant of ’essentially signed’ type is being converted to type _Bool on assignment. 1294 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. An integer constant of ’essentially signed’ type is being converted to enum type on assignment. 1296 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. An integer constant of ’essentially signed’ type is being converted to floating type on assignment. 1298 23185 False negatives for aggregate initializers not followed immedi- ately by a comma. Range of possible enum values suggests this test is always false. 23250 The right argument of a comma expression will be evaluated, so that if it is a constant expression, then the result of the comma 1476 operation will also be handled as a constant expression. A num- ber of different messages may be affected by this update. For instance some false negatives of message 1476 will be cleared. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 485 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation. 1822 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation. 1823 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is non-constant and ’essentially signed’ (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation. 1824 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. 1840 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this relational operation. 1842 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this equality operation. 1843 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is constant, ’essentially signed’ (%2s) and non- negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation. 1844 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 486 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this relational operation. 1852 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this equality operation. 1853 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The %1s operand is ’essentially unsigned’ (%2s) but will be implicitly converted to a signed type (%3s) in this conditional operation. 1854 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The operands of this relational operator are of different ’essential signedness’ but will both be promoted to ’signed int’ for comparison. 1862 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The operands of this equality operator are of different ’essential signed- ness’ but will both be promoted to ’signed int’ for comparison. 1863 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The 2nd and 3rd operands of this conditional operator are of different ’essential signedness’. The result will be in the promoted type ’signed int’. 1864 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. The 2nd and 3rd operands of this conditional operator are expressions of different ’essential type’ categories (%1s and %2s). 1882 23432 Fix to correct analysis of casts that change the const qualifica- tion of pointers to qualified object types resulting in both false positive and false negative messages. ’%s()’ has more than one ’return’ path. 20522 Initial restructuring to enable future use of a preprocessor com- 2006 mon to both C and C++ analyzers, see Messages Location Changes. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 487 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description A tentative definition is being used. Is it appropriate to include an ex- plicit initializer ? 2022 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : unsigned char promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2110 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : unsigned short promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2111 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : unsigned char promoted to unsigned int. 20522 Initial restructuring to enable future use of a preprocessor com- 2112 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : unsigned short promoted to unsigned int. 20522 Initial restructuring to enable future use of a preprocessor com- 2113 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : signed char promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2114 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : signed short promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2115 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : plain char promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2116 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : plain char promoted to unsigned int. 20522 Initial restructuring to enable future use of a preprocessor com- 2117 mon to both C and C++ analyzers, see Messages Location Changes. Default argument promotion : float promoted to double. 20522 Initial restructuring to enable future use of a preprocessor com- 2118 mon to both C and C++ analyzers, see Messages Location Changes. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 488 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Default argument promotion : _Bool promoted to signed int. 20522 Initial restructuring to enable future use of a preprocessor com- 2119 mon to both C and C++ analyzers, see Messages Location Changes. More than one declaration or statement on the same line. 11994 Support for semantics checks on statement expressions will be 2205 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Body of control statement is not enclosed within braces. 11994 Support for semantics checks on statement expressions will be 2212 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. This ’if’ controlling expression is a constant expression and its value is ’true’. 2741 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. This ’if’ controlling expression is a constant expression and its value is ’false’. 2742 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. This function is too complex. Dataflow analysis continues with the next function. 22702 Dataflow will no longer use excessive memory and exit unex- pectedly when analysing functions that contain a conditional that results in a large number of branches e.g. a switch statement 2751 with many case labels. Messages 2751 or 2752 will be gener- ated when the number of branches exceeds 200 and dataflow will not analyze the remainder of the function. This applies to switch statements, nested if-else statements and repeated con- ditional return/abort()/exit() statements. This ’%1s’ results in the function being too complex. Dataflow analysis continues with the next function. 22702 Dataflow will no longer use excessive memory and exit unex- pectedly when analysing functions that contain a conditional that results in a large number of branches e.g. a switch statement 2752 with many case labels. Messages 2751 or 2752 will be gener- ated when the number of branches exceeds 200 and dataflow will not analyze the remainder of the function. This applies to switch statements, nested if-else statements and repeated con- ditional return/abort()/exit() statements. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 489 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Could not analyze function ’%1s’. 20494 In the event of a Dataflow analysis failure, Dataflow will no longer 2757 return error code 16 and instead produce a dataflow internal timeout message so that analysis can continue. Definite: Copy between overlapping objects. 23067 A new message 0681 will be generated when an assignment operation is performed between different members of the same union, except when (1) the two members have compatible types 2776 and overlap exactly, or (2) either or both members are accessed via pointers. Note: dataflow analysis is required to handle ac- cess via pointers, and these cases are already covered by com- plementary dataflow messages 2776, 2777 and 2778. Apparent: Copy between overlapping objects. 23067 A new message 0681 will be generated when an assignment operation is performed between different members of the same union, except when (1) the two members have compatible types 2777 and overlap exactly, or (2) either or both members are accessed via pointers. Note: dataflow analysis is required to handle ac- cess via pointers, and these cases are already covered by com- plementary dataflow messages 2776, 2777 and 2778. Suspicious: Copy between overlapping objects. 23067 A new message 0681 will be generated when an assignment operation is performed between different members of the same union, except when (1) the two members have compatible types 2778 and overlap exactly, or (2) either or both members are accessed via pointers. Note: dataflow analysis is required to handle ac- cess via pointers, and these cases are already covered by com- plementary dataflow messages 2776, 2777 and 2778. Constant: Division by zero. 20522 Initial restructuring to enable future use of a preprocessor com- 2830 mon to both C and C++ analyzers, see Messages Location Changes. Definite: Dereference of an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2841 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Apparent: Dereference of an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2842 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 490 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Suspicious: Dereference of an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2843 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Possible: Dereference of an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2844 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Definite: Computing an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2931 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Apparent: Computing an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2932 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Suspicious: Computing an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2933 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Possible: Computing an invalid pointer value. 15753 New message will be generated to report when a dynamic mem- 2934 ory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to al- locate, see Buffer Overflow Checking. Null statement follows other code on the same line. 20522 Initial restructuring to enable future use of a preprocessor com- 3109 mon to both C and C++ analyzers, see Messages Location Changes. Redundant comma at end of braced initializer will be ignored. 20522 Initial restructuring to enable future use of a preprocessor com- 3111 mon to both C and C++ analyzers, see Messages Location Changes. This statement has no side-effect - it can be removed. 11994 Support for semantics checks on statement expressions will be 3112 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 491 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Hard-coded ’magic’ integer constant, ’%s’. 20522 Initial restructuring to enable future use of a preprocessor com- 3120 mon to both C and C++ analyzers, see Messages Location Changes. Null statement is obscured by code or comment on the same line. 20522 Initial restructuring to enable future use of a preprocessor com- 3139 mon to both C and C++ analyzers, see Messages Location Changes. Null statement does not occur on a line by itself. 20522 Initial restructuring to enable future use of a preprocessor com- 3141 mon to both C and C++ analyzers, see Messages Location Changes. The variable ’%s’ is never set. 11994 Support for semantics checks on statement expressions will be 3196 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. ’%s’ returns a value which is not being used. 11994 Support for semantics checks on statement expressions will be 3200 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The variable ’%s’ is set but never used. 11994 Support for semantics checks on statement expressions will be 3203 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The variable ’%s’ is only set once and so it could be declared with the ’const’ qualifier. 3204 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The identifier ’%s’ is not used and could be removed. 15709 A new message 3213 will be generated to report an unused struct/union/enum tag. A new message 3214 will be generated 3205 to report an unused macro. Existing message 3205 will also be generated for unused enum constants defined at file scope in the source file. ’%s()’ returns a value which is always ignored. 20522 Initial restructuring to enable future use of a preprocessor com- 3209 mon to both C and C++ analyzers, see Messages Location Changes. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 492 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description This cast is redundant. 11994 Support for semantics checks on statement expressions will be 3212 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Identifier declared at a nested level of block scope. 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see 3220 Support for GCC language extensions. 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. No function declaration. Implicit declaration inserted: ’extern int %s();’. 20522 Initial restructuring to enable future use of a preprocessor com- 3335 mon to both C and C++ analyzers, see Messages Location Changes. Statement contains more than one access to objects that are volatile. 11994 Support for semantics checks on statement expressions will be 3345 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. ’%s’ has external linkage and is being defined without any previous declaration. 3408 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. Using one of the keywords ’signed’, ’const’, ’volatile’ or ’enum’. 20522 Initial restructuring to enable future use of a preprocessor com- 3602 mon to both C and C++ analyzers, see Messages Location Changes. Whitespace used after ’#’ at the start of this preprocessing directive. 20522 Initial restructuring to enable future use of a preprocessor com- 3618 mon to both C and C++ analyzers, see Messages Location Changes. Whitespace used before ’#’ at the start of this preprocessing directive. 20522 Initial restructuring to enable future use of a preprocessor com- 3619 mon to both C and C++ analyzers, see Messages Location Changes. Implicit conversion: unsigned char to short. 11994 Support for semantics checks on statement expressions will be 3713 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 493 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Implicit conversion: unsigned char to int. 11994 Support for semantics checks on statement expressions will be 3715 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: unsigned short to short. 11994 Support for semantics checks on statement expressions will be 3747 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: int to unsigned char. 11994 Support for semantics checks on statement expressions will be 3757 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: int to short. 11994 Support for semantics checks on statement expressions will be 3758 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: int to unsigned short. 11994 Support for semantics checks on statement expressions will be 3759 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: int to unsigned int. 11994 Support for semantics checks on statement expressions will be 3760 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Implicit conversion: unsigned long to unsigned char. 11994 Support for semantics checks on statement expressions will be 3790 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The result of this cast is implicitly converted to another type. 23432 Fix to correct analysis of casts that change the const qualifica- 3892 tion of pointers to qualified object types resulting in both false positive and false negative messages. Both operands of |operator are ’Boolean’ expressions. 11994 Support for semantics checks on statement expressions will be 4102 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Right hand operand of arithmetic or bitwise operator is a ’Boolean’ ex- pression. 4105 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 494 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description Operand of logical && or ||operator is not an ’essentially Boolean’ ex- pression. 4115 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Operand of logical ! operator is not an ’essentially Boolean’ expression. 11994 Support for semantics checks on statement expressions will be 4116 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. Left shift operation on signed operand. 11994 Support for semantics checks on statement expressions will be 4131 extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially Boolean’ type (%1s) is being cast to un- signed type ’%2s’. 4304 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A composite expression of ’essentially signed’ type (%1s) is being cast to a different type category, ’%2s’. 4393 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A composite expression of ’essentially unsigned’ type (%1s) is being cast to a different type category, ’%2s’. 4394 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially Boolean’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4404 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially enum’ type (%1s) is being converted to unsigned type, ’%2s’ on assignment. 4424 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 495 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description An expression of ’essentially signed’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4430 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially unsigned’ type (%1s) is being converted to Boolean type, ’%2s’ on assignment. 4440 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to a wider signed type, ’%2s’ on assignment. 4443 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to signed type, ’%2s’ on assignment. 4446 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A non-constant expression of ’essentially signed’ type (%1s) is being converted to narrower signed type, ’%2s’ on assignment. 4460 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A non-constant expression of ’essentially signed’ type (%1s) is being passed to a function parameter of wider signed type, ’%2s’. 4470 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. A non-constant expression of ’essentially unsigned’ type (%1s) is being passed to a function parameter of wider unsigned type, ’%2s’. 4471 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially signed’ type (%1s) is being used as the %2s operand of this logical operator (%3s). 4538 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 496 Programming Research Ltd.

Table 3.17 – continued from previous page Msg. Id. Description An expression of ’essentially signed’ type (%1s) is being used as the first operand of this conditional operator (%2s). 4539 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially unsigned’ type (%1s) is being used as the %2s operand of this logical operator (%3s). 4558 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. An expression of ’essentially unsigned’ type (%1s) is being used as the first operand of this conditional operator (%2s). 4559 11994 Support for semantics checks on statement expressions will be extended, in accordance with the GCC compiler manual, see Support for GCC language extensions. The macro ’%1s’ is also defined in ’<%2s>’. 20522 Initial restructuring to enable future use of a preprocessor com- 4600 mon to both C and C++ analyzers, see Messages Location Changes. The identifier ’%1s’ could conflict in the future with the name of a macro in ’<%2s>’. 4641 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes. The identifier ’%1s’ could conflict in the future with the name of a func- tion in ’<%2s>’. 4643 20522 Initial restructuring to enable future use of a preprocessor com- mon to both C and C++ analyzers, see Messages Location Changes.

RELEASE NOTES : QA·C 9.4.1 Page 497 Programming Research Ltd.

4 QA·C Ticket Summary

4.1 Ticket Summary for QA·C 9.4.1

The following table summarizes the tickets that were closed in QA·C 9.4.1. Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

RELEASE NOTES : QA·C 9.4.1 Page 498 Programming Research Ltd.

Table 4.1: Ticket Summary for QA·C 9.4.1 Ticket Type Description Added new messages 3678, 3679 and 3695 to indicate when a local or static pointer variable could be declared with more const-qualification. Message(s): 0318 0454 0540 0701 0724 0746 0747 0941 1336 1487 1820 1821 1822 1823 1824 1830 1831 1832 1833 1834 1840 1841 1842 1843 1844 1850 1851 1852 1853 1854 1860 1861 1862 1863 1864 2211 3120 3212 3227 3228 3673 3675 3677 3678 3679 3695 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3715 3717 3719 3720 3721 3722 3723 3725 3727 3729 3730 3731 3732 3733 3734 3735 3736 3738 3740 3741 3742 3743 3744 3745 3746 3747 3748 3750 15746 N 3752 3753 3754 3755 3756 3757 3758 3759 3760 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3837 3839 3840 3843 3844 3848 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 Added support for parsing of C99 hexadecimal floating constants. Message(s): 23566 N 0434 [S] The identifier ’%s’ has not been declared. 0907 [S] Unexpected token. 1076 [C99] Use of hexadecimal floating constant.

4.2 Ticket Summary for QA·C 9.4.0

The following table summarizes the tickets that were closed in QA·C 9.4.0.

RELEASE NOTES : QA·C 9.4.1 Page 499 Programming Research Ltd.

Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

Table 4.2: Ticket Summary for QA·C 9.4.0

Ticket Type Description Rework of QAC’s loop control variable detection to correctly recognize loop control variables that are members of aggregates, and remove false positives and negatives when the loop control variable is a pointer. Message(s): 10998 F 0542 0702 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2481 2487 2488 2740 2741 2742 2744 3314 3323 3325 3329 3343 3346 3401 3407 3415 3416 3419 3420 3441 3446 The analysis will no longer abort, and message 0618 will no longer be incorrectly generated in certain situations involving a cast to volatile 14326 F qualifier only (with an implicit ’int’ type). Message(s): 0618 [C99] ’volatile’ qualifier has been duplicated. Message 0402 will no longer be incorrectly generated in certain situ- ations involving assignment between structure members, which are of function pointer type and which are accessed through pointers. 21171 F Message(s): 0402 [U] ’%s’ is modified and accessed between sequence points - evaluation order unspecified. The assignment of a local variable’s address of objects with longer life- time is not always detected. Message(s): 2826 Definite: Use of an object after its lifetime has ended. 2827 Apparent: Use of an object after its lifetime has ended. 2828 Suspicious: Use of an object after its lifetime has ended. 21292 F 2916 Definite: Storing the address of an object in a pointer that has greater lifetime. 2917 Apparent: Storing the address of an object in a pointer that has greater lifetime. 2918 Suspicious: Storing the address of an object in a pointer that has greater lifetime. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 500 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Messages 0838 and 0839 are issued inside the problematic header file instead of the source file, when applicable. This makes it possible to suppress the message with the -q option. Message(s): 21397 F 0838 File ’%1s’ has already been included directly from within file ’%2s’. 0839 File ’%1s’ has already been included indirectly from within file ’%2s’. Added -size and -align options support for configuration of C99 _Bool 21493 N type. New message 3677 to indicate when the element type of an array or pointer to array function parameter should be declared with const quali- fier. Also fixed false negative 3673 on operations which involve multiple pointer dereferences. Message(s): 21553 N 3673 The object addressed by the pointer parameter ’%s’ is not modified and so the pointer could be of type ’pointer to const’. 3677 The elements of the array parameter ’%s’ are not modified and so they could be qualified as ’const’. Messages 2207, 2208 and 2209 now also apply to the braces delimiting the body of functions. In addition, indent and style checking is disabled in certain cases for ambiguous macro arguments and nonstandard lan- 21598 F guage extensions. Message 2200 description improved. Message(s): 2200 2201 2203 2204 2207 2208 2209 2211 2212 2213 2214 2215 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 501 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Added new messages to warn when jumps other than ’break’ are used to terminate switch clauses, and reduced false negatives for switch structure enforcement messages 2002, 2003, 2009 and 2012. New message 2025 to warn of jumps over closure boundaries. Message(s): 2002 No ’default’ label found in this ’switch’ statement. 2003 The preceding ’switch’ clause is not empty and does not end with a ’jump’ statement. Execution will fall through. 2009 This ’default’ label is not the final ’case’ label within the ’switch’ block. 24300 F 2012 This ’default’ label is neither the first nor the last label within the ’switch’ block. 2020 Final ’switch’ clause does not end with an explicit ’jump’ statement. 2023 The preceding ’switch’ clause is not empty and ends with a jump statement other than ’break’. 2024 Final ’switch’ clause ends with a ’jump’ statement other than ’break’. 2025 This appears to jump across a nested function scope bound- ary. Support added for Visual Studio push_macro/pop_macro feature. Message(s): 24414 N 3142 Unable to parse ’%1s_macro’ arguments; ignoring #pragma. 3143 ’%1s_macro’ with non-macro identifier ’%2s’. 3144 Ignoring ’pop_macro’ with empty macro stack for ’%1s’. Added new messages 2052 and 2053 to warn when a line or block comment respectively appears to contain commented-out code. 24695 N Message(s): 2052 This line comment appears to comment out source code. 2053 This block comment appears to comment out source code. The implementation of this struct/union type should be hidden. Message(s): 24697 N 3630 The implementation of this struct/union type should be hid- den. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 502 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description New messages 3469, 3471, 3472, 3473 to indicate when a function-like macro could be rewritten as an equivalent C function. Message(s): 3410 Macro parameter not enclosed in (). 3469 This usage of a function-like macro looks like it could be re- placed by an equivalent function call. 24715 N 3471 Some uses of this function-like macro look like they could be replaced by equivalent function calls. 3472 All toplevel uses of this function-like macro look like they could be replaced by equivalent function calls. 3473 This usage of a function-like setter macro looks like it could be replaced by a similar function call. Messages 0634 and 0635 have been clarified with the names of the affected fields and relocated to point directly at the fields rather than the containing structs. In addition, the -intrinsictype option has been extended with a new suboption, ’bitfield’, which accepts a comma- separated list of builtin types to accept as supported for use in bitfield 24745 F declarations, which will suppress message 0625 when those types are used to declare bitfields. Message(s): 0634 0635 0654 0656 0676 0678 0680 1062 3659 3663 3665 New message 0754 instead of 0556 and 0447 to identify a string literal being modified. 24746 N Message(s): 0556 [C] Left operand of assignment must be a modifiable object. 0754 String literal is being modified. New message 3331 to indicate when the definition for an identifier with external linkage conflicts with a previous declaration in the same scope. Message(s): 24749 N 0627 [C] ’%s’ has different type to previous declaration in the same scope. 3331 The definition for identifier ’%s’ with external linkage conflicts with a previous declaration in the same scope. False positive 2840 when accessing the last array element of struct type with a _Bool member. 24783 F Message(s): 2840 Constant: Dereference of an invalid pointer value. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 503 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description New messages 3241 to warn when inline function declarations are im- plicitly static, and 3242 to warn when a plain inline function declaration rules out making defining it as static later. Also improves consistency of related qualifier/specifier messages. Message(s): 0774 [C] ’auto’ may not be specified on global declaration of ’%s’. 0775 [C] ’register’ may not be specified on global declaration of ’%s’. 2007 ’auto’ does not add information to a declaration, and is best avoided. 24801 N 3236 [C] ’inline’ may not be applied to function ’main’. 3240 inline function ’%s’ is being defined with external linkage. 3241 This inline function declaration for ’%s’ is implicitly static. 3242 This inline function declaration for ’%s’ prevents it from being defined with internal linkage. 3243 inline function ’%s’ is also an ’external definition’. 3244 [C] ’inline’ may only be used in the declaration of a function identifier. 3620 ’register’ may be illegal on array and ’struct’ / ’union’ types in some compilers. New analysis to highlight arrays with explicit initializers for some, but not all, elements. Message(s): 0691 Array initialized with designators has fewer initializers than its declared size. Default initialization is applied to the remain- der of the array elements. 24803 N 0704 Structure initialized with designators has fewer initializers than its declared size. Default initialization is applied to the remainder of the members. 2500 Call to ’%s’ is not immediately preceded by the zero-ing of ’errno’. 2502 Zero-ing of ’errno’ is not immediately followed by a call to an ’errno’ setting function. QAC will generate message 1814 whenever an expression of essen- tially enum type is added or subtracted with an expression with essen- tially character type. 24805 N Message(s): 1814 An operand of ’essentially enum’ type is being added or sub- tracted from an operand of ’essentially character’ type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 504 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description If a composite expression is the operand to the unary negate, unary posate, or bitwise complement operator, the resulting unary expression will inherit that status and also be considered a composite expression. Message(s): 1890 A composite expression of ’essentially signed’ type (%1s) is being implicitly converted to a wider signed type, ’%2s’. 1891 A composite expression of ’essentially unsigned’ type (%1s) is being implicitly converted to a wider unsigned type, ’%2s’. 1892 A composite expression of ’essentially floating’ type (%1s) is being implicitly converted to a wider floating type, ’%2s’. 1893 The 2nd and 3rd operands of this conditional operator are both ’essentially signed’ (’%1s’ and ’%2s’) but one is a com- posite expression of a narrower type than the other. 1894 The 2nd and 3rd operands of this conditional operator are 24809 F both ’essentially unsigned’ (’%1s’ and ’%2s’) but one is a composite expression of a narrower type than the other. 1895 The 2nd and 3rd operands of this conditional operator are both ’essentially floating’ (’%1s’ and ’%2s’) but one is a com- posite expression of a narrower type than the other. 4490 A composite expression of ’essentially signed’ type (%1s) is being converted to wider signed type, ’%2s’ on assignment. 4491 A composite expression of ’essentially unsigned’ type (%1s) is being converted to wider unsigned type, ’%2s’ on assign- ment. 4492 A composite expression of ’essentially floating’ type (%1s) is being converted to wider floating type, ’%2s’ on assignment. 4499 An expression which is the result of a ~ or << operation has been converted to a wider essential type on assignment. New messages 3433 and 3434 to indicate when sizeof or alignof are being used with a non-parenthesized expression operand. 24813 N Message(s): 3433 Expression operand to sizeof is not parenthesized. 3434 Expression operand to alignof is not parenthesized. Message 0499 will be correctly generated in certain situations where the left hand side operand of the shift operator is a constant expression. Note that this update will clear some false negatives in the enforcement 24824 F of MISRA C:2012 Rule 12.2. Message(s): 0499 Right operand of shift operator is greater than or equal to the width of the essential type of the left operand. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 505 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Messages relating to constant wraparound are no longer generated in unevaluated contexts. This change does not apply to overflow mes- sages. Message(s): 0278 [C] Overflow in signed arithmetic operation on constant operands. 0684 [C] Too many initializers. 2800 Constant: Overflow in signed arithmetic operation. 24825 F 2890 Constant: Negative value implicitly converted to an unsigned type. 2910 Constant: Wraparound in unsigned arithmetic operation. 3302 Wraparound past zero in unsigned subtraction of constant operands. 3303 Wraparound past zero in unsigned addition of constant operands. 3304 Wraparound past zero in unsigned multiplication of constant operands. New message 3387 to identify use of increment or decrement operator in an expression that has another side effect. Detection of volatile ac- cess has also been improved, in particular when involving addresses of volatile objects. Message(s): 24835 N 3387 A full expression containing an increment (++) or decrement (–) operator should have no potential side effects other than that caused by the increment or decrement operator. 3421 Expression with persistent side effects is used in an initializer list. False positives for messages 3415, 3416, 3421 and 3446 when an ex- pression calls a function with no persistent side effect. Message(s): 3415 Right hand operand of ’&&’ or ’||’ is an expression with per- sistent side effects. 24836 F 3416 Logical operation performed on expression with persistent side effects. 3421 Expression with persistent side effects is used in an initializer list. 3446 The 2nd or 3rd operand of this conditional operator is an expression with persistent side effects. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 506 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description New message 3350 to highlight when a while loop is controlled by a floating-point comparison. Message(s): 3339 Floating point variable used as ’while’ loop control variable. 24838 N 3340 Floating point variable used as ’for’ loop control variable. 3342 Controlling expression of ’for’ loop is a floating point compar- ison. 3350 Controlling expression of ’while’ loop is a floating point com- parison. New messages 0772 and 0773 to warn when a loop has multiple exits including ’goto’ and ’return’ statements; adjusted the locations of 0769 and 0771 and other loop-control related messages for better consis- 24843 N tency. Message(s): 0708 0766 0767 0768 0769 0770 0771 0772 0773 2001 2005 3310 4397 New option -warnmacroexpansion (-WME) and message 1007 to warn on expansion of the specified macro. 24845 N Message(s): 1007 The macro ’%s’ must not be expanded. 1567 Macro ’%1s’ expanded here. Fixed false positive in 3260, 3261, 3262, 3263 that mistakenly treated arrays as additional levels of pointer nesting. Improved consistency of 0609. Message(s): 0609 [L] More than 12 pointer, array or function declarators mod- ifying a declaration - program does not conform strictly to ISO:C90. 24849 F 3260 Typedef defined with more than 2 levels of indirection. 3261 Member of struct/union defined with more than 2 levels of indirection. 3262 Object defined or declared with more than 2 levels of indirec- tion. 3263 Function defined or declared with a return type which has more than 2 levels of indirection. See 21292. Message(s): 24850 N 2919 Possible: Storing the address of an object in a pointer that has greater lifetime. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 507 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description New message 0895 to mark the point of declaration of a macro param- eter which is subjected to inconsistent expansion. Message(s): 24856 N 0893 Macro argument ’%s’ is both expanded as a macro and used with the ’%s’ operator. 0895 Macro parameter ’%s’ is inconsistently subject to macro re- placement. New metric NPATH corresponding to a strict interpretation of Nejmeh’s execution path complexity metric (i.e. including paths within expres- 24863 N sions expressed via the short-circuiting operators). STPTH is un- changed. Message 2840-2844 range has been replaced by range 2935-2939 for calls to strcpy, strncpy, strcat, strncat, sprintf, swprintf, snprintf, snprintf_s, and strftime. Message(s): 24869 N 2935 Constant: Dereference of an invalid char pointer value. 2936 Definite: Dereference of an invalid char pointer value. 2937 Apparent: Dereference of an invalid char pointer value. 2938 Suspicious: Dereference of an invalid char pointer value. 2939 Possible: Dereference of an invalid char pointer value. Certain messages that apply to initializer expressions will be generated against those expressions instead of being generated at the end of the initialiser list. A number of related messages will also have their lo- cations improved as part of a general message location improvement across QAC. 24875 F Message(s): 0304 0544 0545 0546 0673 0701 0974 1331 1482 2118 2800 2910 2940 3401 4443 4446 4447 4460 4461 4462 4463 4464 4465 4470 4471 4472 4480 4481 4482 4491 4492 4498 Messages 2500 and 2501 are no longer generated when ’errno’ has been tested against zero for the current path. Message(s): 24876 E 2504 Call to ’%s’ is not immediately preceded by the explicit zero- ing of ’errno’. However, ’errno’ is implicitly zero because of the context. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 508 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Reduced false positives and negatives for several messages relating to variable modification in expressions involving statement expressions and nested functions. (Using a variable in a statement expression is no longer considered a modification.) 25045 F Message(s): 0400 0401 0402 0403 0404 0405 2981 2982 2983 3197 3198 3199 3202 3203 3204 3205 3206 Fixed false positive 2212 when brace occurs hidden by a macro in same place in header and main file. 25067 F Message(s): 2212 Body of control statement is not enclosed within braces. Reduced overall QAC memory usage; significantly reduced memory usage of array initializers. 25268 F Message(s): 1324 Function ’main’ cannot be called or have its address taken in C++. Analysis of unused values returned from a function call now includes calls made through pointer to functions. Message(s): 25281 F 3200 ’%s’ returns a value which is not being used. 3208 ’%s()’ returns a value which is sometimes ignored. 3209 ’%s()’ returns a value which is always ignored. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 509 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Fixed false positive 0375/0410 when parenthesized expressions are cast. Locations for parenthesis/volatile messages tightened up. Message(s): 0375 [L] Nesting of parenthesized expressions exceeds 63 - pro- gram does not conform strictly to ISO:C99. 0400 [U] ’%s’ is modified more than once between sequence points - evaluation order unspecified. 0401 [U] ’%s’ may be modified more than once between sequence points - evaluation order unspecified. 0402 [U] ’%s’ is modified and accessed between sequence points - evaluation order unspecified. 25282 F 0403 [U] ’%s’ may be modified and accessed between sequence points - evaluation order unspecified. 0404 More than one read access to volatile objects between se- quence points. 0405 More than one modification of volatile objects between se- quence points. 0410 [L] Nesting of parentheses exceeds 32 - program does not conform strictly to ISO:C90. 3345 Statement contains more than one access to objects that are volatile. 3442 Operator other than & (address-of) or = (assignment) applied to a volatile object. Fixed false positive 1330 on expressions involving a cast to function pointer. Message(s): 25292 F 1330 The parameter identifiers in this function declaration differ from those in a previous declaration. 1334 The parameter identifiers in the prototypes of these function- s/function pointers are different. False Positive 2961 is no longer generated when dereferencing a mem- ber of type pointer to function through an array subscript. 25294 F Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 510 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Dataflow has been improved to model side effects of pointer assign- ment less conservatively. Message(s): 2668 2669 2671 2674 2676 2678 2681 2682 2683 2686 2687 2688 2691 2692 2693 2696 2697 2698 2701 2702 2703 2706 2707 2708 2711 2712 2713 2716 2717 2718 2721 2722 2723 2726 2727 2728 2731 2732 2733 2736 2737 2738 2743 2746 2747 2748 2750 2751 2752 2755 2756 2757 2758 2761 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2785 2786 2789 2791 2792 2793 2796 2797 2798 2799 2800 2801 2802 2803 2806 2807 2808 2809 2810 2811 2812 2813 2814 2816 2817 2818 2819 2820 2821 2822 2823 2824 25305 E 2831 2832 2833 2834 2835 2836 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2856 2857 2858 2860 2861 2862 2863 2865 2866 2867 2868 2869 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2890 2891 2892 2893 2895 2896 2897 2898 2900 2901 2902 2903 2905 2906 2907 2908 2910 2911 2912 2913 2920 2921 2922 2923 2930 2931 2932 2933 2934 2940 2941 2942 2943 2945 2946 2947 2948 2950 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2987 2990 2991 2992 2993 2994 2995 2996 2997 2998 25308 N New met file record, U, generated on expansion of a macro. New met file record, U, generated for use of a typedef. See also 25310 N ticket 25308. Restored behaviour of message 0240 to warn when a carriage-return is detected at the end of a line on a platform which uses only line feeds to mark end-of-line. Added new message 0242 to warn when a carriage- return is detected in a different context. 25447 F Message(s): 0240 [E] This file contains the control-M character at the end of a line. 0242 [E] This file contains the control-M character in the middle of a line. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 511 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Fixed false positives due to incorrect constant folding of casts to _Bool. Message(s): 2741 This ’if’ controlling expression is a constant expression and 25465 F its value is ’true’. 2742 This ’if’ controlling expression is a constant expression and its value is ’false’. Message 2776 will no longer be incorrectly generated when a struc- ture with bit-fields is wrapped in a union and an assignment is made between bit-fields in that structure that are at either side of an 8-bit 25549 F boundary. Message(s): 2776 Definite: Copy between overlapping objects. Fixed crashes seen on certain uses of the default parameter value ex- tension; added new message 1080 to warn when the extension be- comes a constraint violation. 25592 F Message(s): 1080 [C] A typedef or pointer to function is being declared with default argument syntax. This is not allowed. Command line definitinos of __QAC_MAJOR__ and __QAC_MINOR_- 25604 N _ macros no longer take priority over those implicitly defined by QAC. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 512 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description Minor performance improvements, and bug fixes due to improved mod- elling of constants and declaration scope in dataflow. Message(s): 2668 2669 2671 2674 2676 2678 2681 2682 2683 2686 2687 2688 2691 2692 2693 2696 2697 2698 2701 2702 2703 2706 2707 2708 2711 2712 2713 2716 2717 2718 2721 2722 2723 2726 2727 2728 2731 2732 2733 2736 2737 2738 2740 2741 2742 2743 2744 2746 2747 2748 2750 2751 2752 2753 2754 2755 2756 2757 2758 2761 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2784 2785 2786 2789 2790 2791 2792 2793 2796 2797 2798 2799 2800 2801 2802 2803 2806 2807 2808 2809 2810 2811 2812 2813 2814 2816 2817 2818 2819 2820 2821 25655 F 2822 2823 2824 2830 2831 2832 2833 2834 2835 2836 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2855 2856 2857 2858 2860 2861 2862 2863 2865 2866 2867 2868 2869 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2890 2891 2892 2893 2895 2896 2897 2898 2900 2901 2902 2903 2905 2906 2907 2908 2910 2911 2912 2913 2920 2921 2922 2923 2930 2931 2932 2933 2934 2940 2941 2942 2943 2945 2946 2947 2948 2950 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2987 2990 2991 2992 2993 2994 2995 2996 2997 2998 Internal refactoring of flow graph analysis. Message(s): 2811 Definite: Dereference of NULL pointer. 2814 Possible: Dereference of NULL pointer. 25802 F 2916 Definite: Storing the address of an object in a pointer that has greater lifetime. 2918 Suspicious: Storing the address of an object in a pointer that has greater lifetime. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 513 Programming Research Ltd.

Table 4.2 – continued from previous page Ticket Type Description The message status of QAC preprocessing messages has been brought into line with QAC++. Also fixes an error in the handling of malformed #include directives. 25815 F Message(s): 0268 0803 0804 0817 0818 0821 0846 0851 0852 0887 1033 QAC failed to return for code containing a braced initializer to an array of incomplete type. Message(s): 0434 [S] The identifier ’%s’ has not been declared. 0453 [C] An array subscript must have integral type. 0621 [C] The struct/union ’%s’ cannot be initialized because it has unknown size. 0680 [u] Array element is ’void’ or an incomplete ’struct’ or ’union’. Arrays cannot be constructed from incomplete types. 25896 F 0691 Array initialized with designators has fewer initializers than its declared size. Default initialization is applied to the remain- der of the array elements. 0790 This translation unit makes use of floating types. 1269 Floating constant cast to integral type. 1840 The %1s operand is constant, ’essentially signed’ (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation. 3313 No definition has been found for structure/union tag ’%s’. QAC will not double-expand recursive macros when they are reused in 25909 F a function-like macro replacement list.

4.3 Ticket Summary for QA·C 9.3.1

The following table summarizes the tickets that were closed in QA·C 9.3.1. Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

RELEASE NOTES : QA·C 9.4.1 Page 514 Programming Research Ltd.

Table 4.3: Ticket Summary for QA·C 9.3.1 Ticket Type Description QAC no longer fails during analysis of complex resource usage, whilst also addressing false positives where resources may be released through calls to external functions. 25154 F Message(s): 2706 Definite: Allocated memory is not deallocated. 2707 Apparent: Allocated memory is not deallocated. 2708 Suspicious: Allocated memory is not deallocated. QAC no longer fails for translation units that call ’fopen’ or ’freopen’ where the return type is not used. Message(s): 2686 Definite: Writing to a file opened for reading. 2687 Apparent: Writing to a file opened for reading. 2688 Suspicious: Writing to a file opened for reading. 25312 F 2691 Definite: The same file will be open with write access and an- other mode. 2692 Apparent: The same file will be open with write access and an- other mode. 2693 Suspicious: The same file will be open with write access and another mode. The section on the legacy use of command line tools has been re- 25381 E moved. QAC no longer fails on Windows when processing contain- 25407 F ers(std::vector). QAC no longer fails after recovery from syntax errors results in an in- 25415 F valid internal state. QAC shows full header paths by default when printing preprocessed 25417 F source with -ppf, unless disabled with -ef-. QAC no longer fails when checking loop variables for use before initial- ization in infinite loops. 25452 F Message(s): 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 QAC no longer fails when issuing message 1061 for unnamed struct and members. 25461 F Message(s): 1061 [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of structure member ’%3s’. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 515 Programming Research Ltd.

Table 4.3 – continued from previous page Ticket Type Description The severity level of the following messages is restored to the level they had in QAC 9.2: 0268, 0803, 0804, 0817, 0821, 0846, 0887, 1033. Message 0852 is recategorized from constraint error to syntax error. Note that all the message severity changes introduced in QAC 9.3.0 through Ticket 25160 are undone, except for messages 0852 and 3104. Message(s): 0268 [S] Comment open at end of translation unit. 0803 [C] The ’#’ operator may only appear before a macro parameter. 0804 [C] Macro parameter ’%s’ is not unique. 25503 E 0817 [S] Closing quote or bracket ’>’ missing from include filename. 0821 [C] ’#include’ does not identify a header or source file that can be processed. 0846 [S] ’#define’ must be followed by an identifier. 0852 [C] Unable to find the ’)’ that marks the end of the macro call. 0887 [U] Use of ’defined’ must match either ’defined(identifier)’ or ’de- fined identifier’. 1033 [C] The identifier __VA_ARGS__ may only be used in the re- placement list of a variadic macro.

4.4 Ticket Summary for QA·C 9.3.0

The following table summarizes the tickets that were closed in QA·C 9.3.0. Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

Table 4.4: Ticket Summary for QA·C 9.3.0

Ticket Type Description QAC shall no longer treat ’\\’ character placed at the end of the line as 10985 E a line continuation character. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 516 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will provide option to specify typdef names that will be treated as essentially boolean when performing analysis. Message(s): 11200 E 1317 1318 1410 1412 1477 1881 2109 3344 3892 4101 4105 4115 4130 4402 4403 4430 4432 4501 4502 4532 4538 4599 QAC will recognize control variable of floating type in while loops. QAC will generate message 2463 if variable is increased in for loop third expression along loop control variable. Message(s): 13417 E 2463 The variable incremented in the third expression of this ’for’ statement is not the variable identified as the ’loop control vari- able’ (%s). 2464 Loop control variable, %s, modified twice in for-loop header. 3339 Floating point variable used as ’while’ loop control variable. New message to highlight where the default label of a switch statement is not the first or last label 14126 N Message(s): 2012 This ’default’ label is neither the first nor the last label within the ’switch’ block. New messages to identify use of an invariant expression as the first operand of a conditional operator Message(s): 2997 The first operand of this conditional operator is always ’true’. 14489 N 2998 The first operand of this conditional operator is always ’false’. 3493 The first operand of this conditional operator is always constant ’true’. 3494 The first operand of this conditional operator is always constant ’false’. New message 751 has been added, to handle casts to char pointers, for which 310 won’t be generated anymore. 21205 E Message(s): 0310 Casting to different object pointer type. 0751 Casting to char pointer type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 517 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description Dataflow has been improved to model multiple levels of pointer indirec- tion. Since it allows more analysis to be done, all dataflow messages could be impacted Message(s): 2668 2669 2671 2674 2676 2678 2681 2682 2683 2686 2687 2688 2691 2692 2693 2696 2697 2698 2701 2702 2703 2706 2707 2708 2711 2712 2713 2716 2717 2718 2721 2722 2723 2726 2727 2728 2731 2732 2733 2736 2737 2738 2740 2741 2742 2743 2744 2746 2747 2748 2750 2751 2752 2753 2754 2755 2756 2757 2758 2761 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2784 2785 2786 2789 2790 2791 2792 2793 2796 2797 2798 2799 2800 2801 2802 2803 2806 21587 E 2807 2808 2809 2810 2811 2812 2813 2814 2816 2817 2818 2819 2820 2821 2822 2823 2824 2830 2831 2832 2833 2834 2835 2836 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2856 2857 2858 2860 2861 2862 2863 2865 2866 2867 2868 2869 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2890 2891 2892 2893 2895 2896 2897 2898 2900 2901 2902 2903 2905 2906 2907 2908 2910 2911 2912 2913 2920 2921 2922 2923 2930 2931 2932 2933 2934 2940 2941 2942 2943 2945 2946 2947 2948 2950 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2987 2990 2991 2992 2993 2994 2995 2996 2997 2998 22288 E C++ only QAC will generate new messages to identify situations when there is more than one read or more than one write to a volatile type between sequence points. Message(s): 0400 [U] ’%s’ is modified more than once between sequence points - evaluation order unspecified. 22583 E 0402 [U] ’%s’ is modified and accessed between sequence points - evaluation order unspecified. 0404 More than one read access to volatile objects between se- quence points. 0405 More than one modification of volatile objects between se- quence points. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 518 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description A new message 0613 will be generated when the C99 translation limit ’65535 bytes in an object (in a hosted environment only)’ is exceeded. 23418 E Message(s): 0613 [L] Size of object ’%s’ exceeds 65535 bytes - program does not conform strictly to ISO:C99. Message 3344 will no longer be incorrectly generated when the con- trolling expression is an element of a _Bool array. Message(s): 23438 F 3212 This cast is redundant. 3344 Controlling expression is not an ’essentially Boolean’ expres- sion. Messages 1820, 1821, 1822, 1823, 1824, 1850, 1851, 1852, 1853, 1854, 1880, 1881, 1882, 4390 and 4393 will be generated also when the applicable operands happen to be structure/union members, array 23497 F elements, pointer dereferences, results of function calls, etc. Message(s): 1820 1821 1822 1823 1824 1850 1851 1852 1853 1854 1880 1881 1882 4390 4393 Message 0570 will no longer be generated for non negative constant exprsesions of signed type if the value can be represented in the target type. 23530 E Message(s): 0570 This switch case label of ’essential type’ ’%1s’, is not consistent with a controlling expression of essential type ’%2s’. Message 3108 will no longer be generated to report the occurrence of a // character sequence within a // comment. 23542 E Message(s): 3108 Nested comments are not recognized in the ISO standard. New message 2987 to highlight a function call that is redundant and so can be removed. 23544 E Message(s): 2987 This function call produces no side effects and is redundant. The -intrinsictype (-it) configuration option will be extended so that it will 23572 F be possible to specify a list of underlying types that a compiler may use for enumeration types A new message 0615 will be generated when the C99 translation limit ’511 identifiers with block scope declared in one block’ is exceeded. 23574 E Message(s): 0615 [L] More than 511 block scope identifiers defined within a block - program does not conform strictly to ISO:C99. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 519 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will no longer generate messagess 0301, 0303 and 0306 when pointer to void is involved. QAC will generate messages 0326 and 0327 to identify casting between pointer to void and arithmetic type. Message(s): 23603 E 0301 [u] Cast between a pointer to object and a floating type. 0303 [I] Cast between a pointer to volatile object and an integral type. 0306 [I] Cast between a pointer to object and an integral type. 0326 [I] Cast between a pointer to void and an integral type. 0327 [I] Cast between a pointer to void and an floating type. The text of message 1398 will refer to the name of the structure mem- ber that has already been initialised, instead of its zero-based position 23605 E within the structure. Message(s): 1398 Structure member ’%s’ has already been initialized. New messages 0794, 0795 and 0796 will be generated to report iden- tifiers in inner scopes that hide identifiers in outer scopes because they are not distinct within the required number of significant characters. Message(s): 0778 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 0779 [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 23823 E 0789 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. 0794 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C90 limit of 31 significant characters. 0795 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the specified number of significant characters. 0796 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C99 limit of 63 significant characters The following messages have changed their behavior slightly, fixing a number of false positives and negatives 23955 E Message(s): 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 520 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will generate message 1493 whenever result of localeconv, getenv, setlocale or strerror is implicitly assigned to a pointer to a mod- ifiable object. QAC will generate message 1494 whenerver result of localeconv, getenv, setlocale or strerror might have been modified via a 24146 F pointer. Message(s): 1493 The result of library function ’%s’ is used as a pointer to a modi- fiable object. 1494 The result of library function ’%s’ might be modified. The handling of statement expressions and nested function parameters has been improved to stop the generation of message 2752. Message(s): 2668 2669 2671 2674 2676 2678 2681 2682 2683 2686 2687 2688 2691 2692 2693 2696 2697 2698 2701 2702 2703 2706 2707 2708 2711 2712 2713 2716 2717 2718 2721 2722 2723 2726 2727 2728 2731 2732 2733 2736 2737 2738 2740 2741 2742 2743 2744 2746 2747 2748 2750 2751 2752 2753 2754 2755 2756 2757 2758 2761 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2784 2785 2786 2789 2790 2791 2792 2793 2796 2797 2798 2799 2800 2801 2802 2803 2806 2807 2808 2809 2810 2811 2812 2813 2814 2816 24175 E 2817 2818 2819 2820 2821 2822 2823 2824 2830 2831 2832 2833 2834 2835 2836 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2855 2856 2857 2858 2860 2861 2862 2863 2865 2866 2867 2868 2869 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2890 2891 2892 2893 2895 2896 2897 2898 2900 2901 2902 2903 2905 2906 2907 2908 2910 2911 2912 2913 2920 2921 2922 2923 2930 2931 2932 2933 2934 2940 2941 2942 2943 2945 2946 2947 2948 2950 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2987 2990 2991 2992 2993 2994 2995 2996 2997 2998 The behavior of message 3315 has been fixed, removing some false negatives. 24199 F Message(s): 3315 This ’switch’ statement is redundant. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 521 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description Messages 2501 and 2502 will be generated even if the expected state- ment is not encountered because the end of the translation unit is reached. Messages 2501 will not be generated when the return value of an errno setting function can be used to determine if an error has 24211 E occured. Message(s): 2501 Call to ’%s’ is not immediately followed by the testing of ’errno’. 2502 Zeroing of ’errno’ is not immediately followed by a call to an ’er- rno’ setting function. Message 2016 has been split to distinguish switch default blocks that are empty with a comment from those without comments. Message(s): 24296 E 2014 This ’switch’ statement ’default’ clause is empty and contains comments. 2016 This ’switch’ statement ’default’ clause is empty. Unnamed bitfields affect the padding between members but are not counted as members for initialization, QAC will no longer incorrectly consider them for initialization. 24302 E Message(s): 0703 Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members. Messages 2777, 2778 and 2779 are now generated for assignment involving an element of an array that is a union member, and another overlapping member of the same union. 24309 E Message(s): 2776 Definite: Copy between overlapping objects. 2777 Apparent: Copy between overlapping objects. 2778 Suspicious: Copy between overlapping objects. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 522 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description New messages 0791, 0792 and 0793 will be generated instead of, re- spectively, existing messages 0779, 0778 and 0789 if the conflict arises between two macro identifiers. Message(s): 0778 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 0779 [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 0789 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 63 24326 E characters - program does not conform strictly to ISO:C99. 0791 [U] Macro identifier does not differ from other macro identifier(s) (e.g. ’%s’) within the specified number of significant characters. 0792 [L] Macro identifier matches other macro identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 0793 [L] Macro identifier matches other macro identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. 24406 F C++ only Message 3421 will also be generated when the initializing expression involves a dereference of a pointer to a volatile object, array access to a volatile object, or access of a struct or union volatile member via the dot or arrow operator. Message 3421 will no longer be incorrectly 24424 E generated against an initializing expression that contains addresses of volatile objects which are not dereferenced. Message(s): 3421 Expression with possible side effects is used in an initializer list. New analysis to detect resourecs, including memory and files, that are acquired but not released. Message(s): 24434 N 2701 2702 2703 2706 2707 2708 2711 2712 2713 2726 2727 2728 2731 2732 2733 2736 2737 2738 2746 2747 2748 New analysis to detect use of ’free’ to memory that was not allocated dynamically Message(s): 2716 Definite: Memory deallocated multiple times. 24435 N 2717 Apparent: Memory deallocated multiple times. 2718 Suspicious: Memory deallocated multiple times. 2721 Definite: Deallocation of non dynamic memory. 2722 Apparent: Deallocation of non dynamic memory. 2723 Suspicious: Deallocation of non dynamic memory. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 523 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description New analysis to identify an attempt to write to a FILE that was opened for reading. Message(s): 2686 Definite: Writing to a file opened for reading. 2687 Apparent: Writing to a file opened for reading. 2688 Suspicious: Writing to a file opened for reading. 24436 N 2691 Definite: The same file will be open with write access and an- other mode. 2692 Apparent: The same file will be open with write access and an- other mode. 2693 Suspicious: The same file will be open with write access and another mode. New analysis to detect usage of a FILE pointer after the stream has been closed Message(s): 24439 N 2696 Definite: Attempt to access a file which has been closed. 2697 Apparent: Attempt to access a file which has been closed. 2698 Suspicious: Attempt to access a file which has been closed. Support for designated initialization of union member other than the first, reducing false positives and negatives where these values are used. Also addressed failure for aggregate union member subse- quently overwritten by a designated initializer other than the first mem- ber. 24451 F Message(s): 1397 1398 1399 2671 2676 2761 2766 2771 2776 2786 2791 2796 2801 2806 2811 2816 2821 2831 2836 2841 2846 2851 2856 2861 2891 2896 2901 2906 2911 2921 2931 2941 2946 2951 QAC will generate message 0945 only if expression, used as an operand of sizeof operator, has side effects. 24460 E Message(s): 0945 [C99] Operand of sizeof is an expression of variable length array type with side effects. QAC will generate message 2013 for empty else statement in ’if .. else if’ constructs. 24467 E Message(s): 2013 This ’if .. else if ’ construct ’else’ statement is empty. All SMT delayed messages may be modified, due to new analysis oc- 24469 F curing in array initializers continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 524 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description Removed dependency on the legacy configuration file ’qac.cfg’. Message(s): 24507 E 0160 [U] Using unsupported conversion specifier number %s. 0190 [U] Using unsupported conversion specifier number %s. 24614 E See 14126 Message 3006 will recognize encapsulation of assembly in macros, supported by new message 3008 Message(s): 24667 E 3006 This function contains a mixture of in-line assembler statements and C statements. 3008 This function contains a mixture of in-line assembler statements and C code. Message 0883 will be generated for files where there is no code to protect. #elif and #else are no longer considered part of a valid include 24688 F guard. Message(s): 0883 Include file code is not protected against repeated inclusion QAC will generate new message 840 in case of #include directive fol- lowed by extra tokens. Message(s): 0818 [Q] Cannot find ’%s’ - Perhaps the appropriate search path was 24724 F not given ? 0821 [C] ’#include’ does not identify a header or source file that can be processed. 0840 [E] Extra tokens at end of #include directive. 0917 [S] Unable to recover from syntax errors in this source file. QAC will generate new message 0603 whenever macro identifier be- ginning with an underscore is defined or undefined. Message(s): 0603 [U] The macro identifier ’%s’ is reserved. 4600 The macro ’%1s’ is also defined in ’<%2s>’. 4601 The macro ’%1s’ is the name of an identifier in ’<%2s>’. 4620 The macro ’%1s’ may also be defined as a macro in ’<%2s>’. 24727 E 4621 The macro ’%1s’ may also be defined as a typedef in ’<%2s>’. 4640 The macro ’%1s’ could conflict in the future with the name of a macro in ’<%2s>’. 4642 The macro ’%1s’ could conflict in the future with the name of a function in ’<%2s>’. 4644 The macro ’%1s’ could conflict in the future with the name of a typedef in ’<%2s>’. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 525 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will generate messages 3003 and 3004 correctly when the condi- tional operator is involved in expression. Message(s): 24765 E 3003 This character constant is being interpreted as a NULL pointer constant. 3004 This integral constant expression is being interpreted as a NULL pointer constant. QAC will generate message 3432 for simple (precedence-safe) argu- ments to macros if they are not parenthesized 24771 E Message(s): 3430 Macro argument expression may require parentheses. 3432 Simple macro argument expression is not parenthesized. New messages 3462,3463,3464,3465,3466,3467 added to warn when a side-effecting expression passed as an argument to a function-like macro is not consistently evaluated exactly once; fixed false negative for 3456 when non-parenthesized Message(s): 3456 Parameter ’%s’ will be evaluated more than once when this macro is used. 3462 Argument to macro ’%s’ appears to contain a side effect, but it is not used. 24774 E 3463 Argument to macro ’%s’ contains a side effect that will not be evaluated at runtime. 3464 Argument to macro ’%s’ contains a side effect that will be evalu- ated more than once. 3465 Argument to macro ’%s’ contains a side effect that might not be evaluated at runtime. 3466 Variable argument list to macro ’%s’ appears to contain an ex- pression with side effects. 3467 Variable argument list to macro ’%s’ appears to contain an ex- pression with side effects that will be used more than once. New analysis to detect where the size argument of certain standard library functions has value of 0. Message(s): 2865 Constant: Using 0 as size parameter of a function call. 24782 N 2866 Definite: Using 0 as size parameter of a function call. 2867 Apparent: Using 0 as size parameter of a function call. 2868 Suspicious: Using 0 as size parameter of a function call. 2869 Possible: Using 0 as size parameter of a function call. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 526 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description New messages 2218 and 2219 have been added, to handle the switch statements without braces, following the model of 2212 and 2214. Message(s): 24822 E 2218 Body of switch statement is not enclosed within braces. 2219 Body of switch statement is on the same line and is not enclosed within braces. QAC will generate message 4389 whenever a composite expression of essentially character type has been cast to a different essential type category. 24830 F Message(s): 4389 A composite expression of ’essentially char’ type (%1s) is being cast to a different type category, ’%2s’. QAC will generate new messages 0323 and 0324 to report cast be- tween pointer to incomplete type and a type. Messages 0301 and 0306 will no longer be generated for casts mentioned above. Message(s): 24839 E 0301 [u] Cast between a pointer to object and a floating type. 0306 [I] Cast between a pointer to object and an integral type. 0323 [u] Cast between a pointer to incomplete type and a floating type. 0324 [u] Cast between a pointer to incomplete type and an integral type. QAC will generate message 2668 or 2669 respectively where a pointer to an array is subtracted or compared to a pointer that does not refer to an array. 24848 E Message(s): 2668 Subtraction of a pointer to an array and a pointer to a non array. 2669 Comparison of a pointer to an array and a pointer to a non array. QAC will generate message 0325 to report cast between pointer to a function and a pointer to incomplete type, or vice a versa. Mes- sage 0307 will no longer be generated under circumstances described above. 24853 E Message(s): 0307 [u] Cast between a pointer to object and a pointer to function. 0325 [u] Cast between a pointer to incomplete type and a pointer to function. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 527 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will take into account function parameter names when generating messages 0778, 0779, 0789, 0794, 0795, 0796. Message(s): 0778 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 0779 [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 24855 E 0789 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 63 characters - program does not conform strictly to ISO:C99. 0794 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C90 limit of 31 significant characters. 0795 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the specified number of significant characters. 0796 Identifier matches other identifier(s) (e.g. ’%s’) in an outer scope within the ISO:C99 limit of 63 significant characters Messages 2501 will not be generated when the return value of an errno setting function is used to determine if an error has occurred. 24877 E Message(s): 2501 Call to ’%s’ is not immediately followed by the testing of ’errno’. QAC will generate message 3449 to warn about multiple external dec- larations ofa same variable or function. 24886 E Message(s): 3449 Multiple declarations of external object or function. QAC will generate new messages 3383,3384,3385,3386 when it is un- able to detect an unsigned arithmetic wraparound guard Message(s): 3383 Cannot identify wraparound guard for unsigned arithmetic ex- pression. 24890 E 3384 Cannot identify wraparound guard for dependent unsigned arith- metic expression. 3385 Cannot identify wraparound guard for sizeof-VLA expression. 3386 Cannot identify wraparound guard for dependent sizeof-VLA ex- pression. New messages 2140-2155 will be generated on implicit or explicit con- version of plain or signed char to a type of potentially-higher rank 24894 E Message(s): 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 528 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description Messages 3238 and 3237 won’t cancel dataflow analysis anymore (message 2753 won’t be generated subsequently to these two ones). Message(s): 2753 As a result of error message ’%s’, dataflow analysis of the re- 24906 E mainder of this function is not possible. 3237 [C] inline function ’%1s’ has external linkage and is defining an object, ’%2s’, with static storage duration. 3238 [C] inline function ’%1s’ has external linkage and is referring to an object, ’%2s’, with internal linkage. Message 0883 is now generated once per include per translation unit. 24975 E Message(s): 0883 Include file code is not protected against repeated inclusion False negatives removed for message 3204 Message(s): 24995 F 3204 The variable ’%s’ is only set once and so it could be declared with the ’const’ qualifier. Message 3421 will no longer be generated for calls to functions defined in the current translation unit that do not result in any form of side-effect. 25044 E Message(s): 3421 Expression with possible side effects is used in an initializer list. QAC will generate message 0328 to identify casts between pointer to object and an essential type other than signed/unsigned. 25048 E Message(s): 0328 [u] Cast between a pointer to object and an essential type other than signed/unsigned. New message 3468 added to highlight C90 reserved identifiers that are now keywords in C99. Note: _Bool will now generate 3468 and not 3439. 25051 E Message(s): 3439 Macro redefines a keyword. 3468 The name of this macro is a reserved identifier in C90 and a keyword in C99. QAC will generate message 0735 whenever switch expression is of es- sentially Boolean type. 25080 E Message(s): 0735 Switch expression is of essentially Boolean type. QAC will not count unnamed bitfields when generating message 0703. Message(s): 25088 E 0703 Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 529 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description QAC will generate message 0553 when it would previously have been obscured by declarations eliciting message 0709, 0625, or similar link- age constraint violations 25094 F Message(s): 0553 Translation unit contains no object or function definitions with external linkage. 25127 F Return code 18 added to component file. Change status of messages 245, 249, and 259 to more accurately re- flect standard (syntax error to undefined behavior). Message(s): 25140 F 0245 [S] Empty character constant. 0249 [S] Character constant contains a new-line character. 0259 [S] String literal is not terminated. Token-based analysis messages will now be emitted within asm blocks, making the behavior consistent between asm and _ignore Message(s): 0249 [S] Character constant contains a new-line character. 0259 [S] String literal is not terminated. 0285 [I] Character constant contains character which is not a member of the basic source character set. 0286 [I] String literal contains character which is not a member of the 25143 F basic source character set. 0811 [C] The glue operator ’##’ may only appear in a ’#define’ prepro- cessing directive. 0812 [C] Header name token ’’ found outside ’#include’ prepro- cessing directive. 0849 [S] Preprocessing directive appears in the middle of a line. 0873 [C] Preprocessing token cannot be converted to an actual token. 0899 [E] Unrecognized preprocessing directive has been ignored - as- sumed to be a language extension. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 530 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description The following messages will have their locations slightly adjusted to improve accuracy and compatibility with QAC++: 0231, 0232, 0233, 0235, 0244, 0245, 0249, 0250, 0258, 0259, 0284, 0388, 0500, 0501, 0502, 0580, 0602, 0605, 0788, 0791, 0792, 0793, 0804, 0807, 0810, 0813, 0814, 0815, 0816, 0818, 0821, 0823, 0824, 0826, 0827, 0830, 0831, 0832, 0833, 0836, 0837, 0838, 0841, 0842, 0843, 0846, 0847, 0848, 0850, 0853, 0854, 0861, 0868, 0873, 0877, 0879, 0880, 0881, 0883, 0884, 0885, 0886, 0887, 0888, 0889, 0894, 0896, 0897, 0898, 0899, 1001, 1009, 1010, 1028, 1030, 1035, 1251, 1252, 1253, 1254, 1255, 1272, 1277, 1278, 1279, 1281, 2830, 2910, 2920, 3101, 3102, 3104, 3107, 3108, 3115, 3116, 3117, 3218, 3409, 3411, 3412, 3413, 3414, 3428, 3431, 3438, 3443, 3452, 3453, 3457, 3458, 3459, 3460, 3461, 3609, 3610, 3613, 3616, 4101-4116, 4580, 4581, 4582, 4583, 4584, 4585, 4586, 4587, 4588, 4589, 4590, 4600-4608, 4620-4624, 4540-4645, 4700, 4810-4817, 4820-4828 Message(s): 0231 0232 0233 0235 0244 0245 0249 0250 0258 0259 0284 0388 0500 0501 0502 0580 0602 0605 25148 E 0788 0791 0792 0793 0804 0807 0810 0813 0814 0815 0816 0818 0821 0823 0824 0826 0827 0830 0831 0832 0833 0836 0837 0838 0841 0842 0843 0846 0847 0848 0850 0853 0854 0861 0868 0873 0877 0879 0880 0881 0883 0884 0885 0886 0887 0888 0889 0894 0896 0897 0898 0899 1001 1009 1010 1028 1030 1035 1251 1252 1253 1254 1255 1272 1277 1278 1279 1281 2830 2910 2920 3101 3102 3104 3107 3108 3115 3116 3117 3218 3409 3411 3412 3413 3414 3428 3431 3438 3443 3452 3453 3457 3458 3459 3460 3461 3609 3610 3613 3616 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4600 4601 4602 4603 4604 4605 4606 4607 4608 4620 4621 4622 4623 4624 4640 4641 4642 4643 4644 4645 4700 4810 4811 4812 4813 4814 4815 4816 4817 4820 4821 4822 4823 4824 4825 4826 4827 4828 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 531 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description The following messages have been removed from QAC 9.3 and their functionality merged into existing checks: 0257, 0251, 0261, 0269, 0809, 0807, 0806, 0847, 0856 Message(s): 0251 [S] Character constant contains a trigraph representation of a single backslash character. 0257 [S] String literal is not terminated. A trigraph has been used in the construction of an escape sequence. 25149 E 0261 [C] Comment still open at end of included file. 0269 [S] Unexpected end of file. 0806 [S] Comma missing in macro parameter list. 0807 [S] Identifier missing in macro parameter list. 0809 [U] The ’#include’ preprocessing directive has not been followed by or "s-char-sequence". 0847 [S] ’#undef’ must be followed by an identifier. 0856 [C] Fewer arguments in macro call than specified in definition. The following metrics have changed their behavior slightly: , , , , I, STBME, STBMO, STBMS, STBUG, STCCB, STCDN, STDEV, STDIF, STEFF, STFDN, STFDT, 25150 E STFN1, STFN2, STHAL, STKDN, STM20, STM21, STM28, STM33, STOPN, STOPT, STPDN, STSHN, STTDE, STTDO, STTDS, STTOT, STTPP, STVAR, STVOL, STXLN, STZIP continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 532 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description The following messages have changed their behavior slightly, fixing a number of false positives and negatives and improving consistency: 241, 245, 259, 268, 285, 286, 287, 288, 289, 337, 0339, 0372, 828, 0380, 0857, 0553, 0784, 785, 786, 0787, 0804, 0805, 0808, 0811, 0812, 0814, 0818, 0821, 0822, 0823, 0827, 0829, 0830, 0842, 0846, 0849, 0850, 0850, 1035, 0851, 0852, 0853, 0855, 0862, 0869, 0872, 0873, 0894, 0896, 0897, 0898, 0899, 0914, 0925, 1002, 1005, 1006, 1011, 1033, 2211, 2217, 3108, 3120, 3121, 3122, 3123, 3317, 3318, 3431, 3601, 4700, 4810-4817, 4820-4835 Message(s): 25151 E 0241 0245 0259 0268 0285 0286 0287 0288 0289 0337 0339 0372 0380 0553 0784 0785 0786 0787 0804 0805 0808 0811 0812 0814 0818 0821 0822 0823 0827 0828 0829 0830 0842 0846 0849 0850 0850 0851 0852 0853 0855 0857 0862 0869 0872 0873 0894 0896 0897 0898 0899 0914 0925 1002 1005 1006 1011 1033 1035 2211 2217 3108 3120 3121 3122 3123 3317 3318 3431 3601 4700 4810 4811 4812 4813 4814 4815 4816 4817 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 The following messages have had their severity level increased: 0803, 0804, 0821, 0852, 0887, 1033. The following messages have had their severity level decreased: 0268, 0817, 0846, 3104. 25160 E Message(s): 0159 0268 0803 0804 0817 0821 0846 0852 0887 1033 3104 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 533 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description The modeling of member objects first defined in quieted header files has been updated. The result is a removal of related false negative dataflow messages on these members. Message(s): 2668 2669 2671 2674 2676 2678 2681 2682 2683 2686 2687 2688 2691 2692 2693 2696 2697 2698 2701 2702 2703 2706 2707 2708 2711 2712 2713 2716 2717 2718 2721 2722 2723 2726 2727 2728 2731 2732 2733 2736 2737 2738 2740 2741 2742 2743 2744 2746 2747 2748 2750 2751 2752 2753 2754 2755 2756 2757 2758 2761 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2784 2785 2786 2789 2790 2791 2792 2793 2796 2797 2798 2799 2800 2801 2802 2803 2806 25189 F 2807 2808 2809 2810 2811 2812 2813 2814 2816 2817 2818 2819 2820 2821 2822 2823 2824 2830 2831 2832 2833 2834 2835 2836 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2856 2857 2858 2860 2861 2862 2863 2865 2866 2867 2868 2869 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2890 2891 2892 2893 2895 2896 2897 2898 2900 2901 2902 2903 2905 2906 2907 2908 2910 2911 2912 2913 2920 2921 2922 2923 2930 2931 2932 2933 2934 2940 2941 2942 2943 2945 2946 2947 2948 2950 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2987 2990 2991 2992 2993 2994 2995 2996 2997 2998 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 534 Programming Research Ltd.

Table 4.4 – continued from previous page Ticket Type Description Fixed inconsistencies between the number of parameter text placehold- ers(%s) and the number of parameters written for the diagnostic. Message(s): 0821 [C] ’#include’ does not identify a header or source file that can be processed. 1005 [S] End-of-file encountered when expecting ’#endif’ preprocess- ing directive. 25262 F 1067 [C99] Union member is a struct declared with a flexible array member. 1068 [E] Union member is a struct declared with a potentially-flexible array member. 1495 Destination and source objects have incompatible types. 1496 Destination and source objects may have incompatible types. 3199 This assignment is redundant. The value of this object is never used before being modified.

4.5 Ticket Summary for QA·C 9.2.0

The following table summarizes the tickets that were closed in QA·C 9.2.0. Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

Table 4.5: Ticket Summary for QA·C 9.2.0

Ticket Type Description A new message 3327 will be generated when a goto statement refer- ences a label which is not declared in the same block, or in any block enclosing that goto statement. Note: message 3327 can be used to 14125 N enforce MISRA C:2012 Rule 15.3. Message(s): 3327 This goto statement references a label that is declared in a sep- arate block. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 535 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Message locations have been improved as part of restructuring to en- able future use of a preprocessor common to both C and C++ analyz- ers. Message(s): 0340 0341 0342 0343 0352 0372 0784 0801 0802 0803 0812 0824 0825 0830 0834 0835 0842 0844 20272 E 0845 0849 0855 0858 0863 0864 0865 0866 0867 0873 0874 0875 0878 0880 0881 0883 0884 0890 0891 0899 1002 1003 1004 1008 1018 1036 1042 1045 1327 1690 1691 2211 3106 3318 3429 3435 3436 3439 3443 3456 3608 3614 3615 3618 3619 3628 The performance of QAC will be improved when a file is repeatedly included. This performance improvement will be negligible in most sit- uations, however it will be quite significant in certain cases of automat- ically generated code, where repeated inclusion is both intended and intensive. As part of this update, messages 0838 and 0839 will be gen- erated only once against the applicable inclusion, even if the file has 20327 F already been previously included multiple times. Message(s): 0838 File ’%1s’ has already been included directly from within file ’%2s’. 0839 File ’%1s’ has already been included indirectly from within file ’%2s’. Fixed false negatives for Dataflow messages for cases involving use of C99 non-constant initializers for struct/union/array type objects. 20341 F Message(s): 2831 Definite: Division by zero. Fixed false negatives for checking of unset variables for cases where an uninitialized variable is used subsequently to being passed by reference to a function. 21192 E Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. 2962 Apparent: Using value of uninitialized automatic object ’%s’. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 536 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Location of sub-messages related to Dataflow inter-function analysis has been improved to point to the location where variables are set rather than the function parameter. Message(s): 1570 Called from here. 1575 Variable ’%1s’ previously seen here. (Specimen value: ’%2s’). 21451 E 1579 Referenced here. 1580 Function ’%1s’ calls ’%2s’ here. 1582 Previously seen here. 1586 Previously set here. 1590 Offending operand. 1592 ’%1s’ declared in %2s ’%3s’. 1594 ’%1s’ declared here. Message 0435 will no longer be incorrectly generated for designators of structure members under certain circumstances where the members are part of a nested structure and their designators are preceded by a 22098 F chain of partially designated initialisers. Message(s): 0435 [C] The ’struct’/’union’ member ’%s’ does not exist. QAC will no longer incorrectly generate messages 435, 693 and 904 for initialisation of nested objects using designated initialisers under certain circumstances where preceding nested objects are initialised with des- ignated initialisers that do not reflect the order in the declaration of the 22180 E object type. See Full Support for Designated Initializers Message(s): 0435 [C] The ’struct’/’union’ member ’%s’ does not exist. 0693 Struct initializer is missing the optional {. 0904 [S] Invalid designator. QAC will no longer incorrectly generate messages that relate to objects not being used when those objects are actually used to initialise mem- bers of structures/unions or elements of arrays. 22230 F Message(s): 2983 This assignment is redundant. The value of this object is never subsequently used. Fixed false negative for message 2831 on structure members for aliased structures when passed as argument to a function. 22653 F Message(s): 2831 Definite: Division by zero. QAC will no longer abort with a SIGSEGV fault when analysing ini- 22690 F tialisers containing GCC extension statement expressions which return struct objects. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 537 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description A new message is generated when Dataflow detects incorrect use of Standard Library string handling functions that results in access beyond the bounds of an object passed as an argument to the function. 22788 N Message(s): 2835 Constant: Non null terminated string used in a string function. 2836 Definite: Non null terminated string used in a string function. 2839 Possible: Non null terminated string used in a string function. New messages 2676 and 2678 are generated when Dataflow detects that the value returned from a Standard Library function that can re- turn EOF is modified before being compared to macro EOF. In addition, new messages 2671 and 2674 are generated when a value being com- pared with macro EOF is seen as not having originated from am EOF returning function. Message(s): 22789 N 2671 Definite: The value being compared with macro EOF does not originate from an EOF returning function. 2674 Possible: The value being compared with macro EOF does not originate from an EOF returning function. 2676 Definite: The value originating from an EOF returning function was modified before being compared with macro EOF. 2678 Suspicious: The value originating from an EOF returning func- tion was modified before being compared with macro EOF. A new message will be generated when Dataflow detects that the Stan- dard Library function memcmp is being used to compare null terminated strings. Message(s): 2785 Constant: Null terminated string is being passed as argument to 22832 N Standard Library function memcmp. 2786 Definite: Null terminated string is being passed as argument to Standard Library function memcmp. 2789 Possible: Null terminated string is being passed as argument to Standard Library function memcmp. Fixed false positive for message 2961 for cases when structure is passed as argument to a function with void pointer parameter and ini- 22873 F tialised within the function. Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. Improved memory usage when analysing some translation units which 23374 F include the same header multiple times. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 538 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Messages 0380 and 0857 will be generated against the macro definition in the main source file that causes the applicable ISO C limit to be exceeded. If instead that macro definition happens to be located in an included header, then message 0380 or 0857 will be generated against the ’#include’ directive in the main source file that leads to the inclusion of that macro definition. Since messages 0380 and 0857 will no longer 23393 F be incorrectly generated at the non-existent line 0, it will be possible to suppress them. Message(s): 0380 [L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99. 0857 [L] Number of macro definitions exceeds 1024 - program does not conform strictly to ISO:C90. Dataflow modelling of pointers and members of structures/unions has been improved in order to address false positives for a number of mes- sages. 23458 E Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. 2962 Apparent: Using value of uninitialized automatic object ’%s’. 2963 Suspicious: Using value of uninitialized automatic object ’%s’. A new message 1496 will be generated when the destination and/or source argument of memcpy or memmove is a pointer to void. Other- wise, a new message 1495 will be generated when the destination and source arguments of memcpy or memmove are not pointers to qualified or unqualified versions of compatible types. Existing message 1487 will also be extended, so that array arguments to memcmp will be handled 23471 E as pointer arguments. Consequently message 1487 will no longer be incorrectly generated in certain situations involving array parameters. Message(s): 1487 Comparing the representations of objects of different types. 1495 %s destination and source objects have incompatible types. 1496 %s destination and source objects may have incompatible types. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 539 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description The analysis of initialiser lists which contain array identifiers (to initialise members of pointer type) will be properly carried out, so that subse- quent expressions in the initialiser list will not be affected by rogue false positives, for instance of messages 0671, 0674, 0684, 0703, 3768, 3892 and 4461, or false negatives, for instance of message 0673. Message(s): 0671 [C] Initializer for object of arithmetic type is not of arithmetic type. 0673 [C] Initializer points to a more heavily qualified type. 23547 F 0674 [C] Initializer for pointer is of incompatible type. 0684 [C] Too many initializers. 0703 Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members. 3768 Implicit conversion: unsigned int to unsigned char. 3892 The result of this cast is implicitly converted to another type. 4461 A non-constant expression of ’essentially unsigned’ type (%1s) is being converted to narrower unsigned type, ’%2s’ on assign- ment. Message 0403 will no longer be incorrectly generated is situations where a statement expression is used as an operand of an operator whose order of evaluation is unspecified, and the other operand in- cludes the identifier of a local object, and the statement expression 23548 F does not use or modify that local object. Message(s): 0403 [U] ’%s’ may be modified and accessed between sequence points - evaluation order unspecified. Fixed incorrect computation of address of structures that contain a pointer to themselves. Message(s): 2990 The value of this loop controlling expression is always ’true’. 2991 The value of this ’if’ controlling expression is always ’true’. 2992 The value of this ’if’ controlling expression is always ’false’. 23561 F 2993 The value of this ’do - while’ loop controlling expression is always ’false’. The loop will only be executed once. 2994 The value of this ’while’ or ’for’ loop controlling expression is always ’false’. The loop will not be entered. 2995 The result of this logical operation is always ’true’. 2996 The result of this logical operation is always ’false’. QAC will now correctly handle constructs involving both gcc statement expressions and initialisers. See also ticket 24111. 23576 F Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 540 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description When the warncall option is used to enable the reporting of calls to the ’exit’ function, QAC will no longer generate default message 2010 (or any other alternative message specified by the warncall option) against statement expressions that do not contain calls to the ’exit’ function. In these situations M3CM will also no longer incorrectly generate mes- 23579 F sage 5126 to report violations of MISRA C:2012 Rule 21.8. Note that statement expressions are a GCC language extension, and that func- tion ’exit’ is defined in the standard library header . Message(s): 2010 The function ’%s()’ must not be called. No changes to QAC functionality have been implemented for this ticket, 23580 F which is to be considered internal. When a struct/union/array is initialised with an initialiser list, messages 1291, 1398 and 3421 will be generated against the initialiser’s expres- sion they refer to, instead of the subsequent token (comma or curly bracket). 23581 E Message(s): 1291 An integer constant of ’essentially unsigned’ type is being con- verted to signed type on assignment. 1398 Structure member ’%s’ has already been initialized. 3421 Expression with possible side effects is used in an initializer list. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 541 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Location changes as a result of Ticket 22180. See Full Support for Designated Initializers Message(s): 0428 0436 0702 1073 1256 1257 1264 1265 1266 1276 1290 1292 1293 1294 1295 1296 1297 1298 1299 1312 1317 1334 1397 1399 1402 1412 1422 1432 1442 2850 2855 2890 2895 2900 2905 2940 2945 3003 3004 3203 3204 3344 3415 3416 3446 3604 3676 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3715 3717 3719 3720 3721 3722 3723 3725 3727 3729 3730 3731 3732 3733 3734 3735 3736 3738 3740 3741 3742 3743 3744 3745 3746 3747 3748 3750 3752 3753 3754 3755 3756 3757 3758 3759 3760 3762 3763 3764 3765 3766 3767 3769 3770 3771 3772 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 23614 F 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3837 3839 3840 3843 3844 3847 3848 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 4301 4302 4303 4304 4305 4310 4312 4315 4320 4322 4325 4330 4332 4340 4342 4350 4351 4352 4390 4391 4392 4393 4394 4395 4401 4402 4403 4404 4405 4410 4412 4413 4414 4415 4420 4421 4422 4423 4424 4425 4430 4431 4432 4434 4435 4436 4437 4440 4441 4442 4443 4445 4446 4447 4450 4451 4452 4453 4454 4460 4462 4463 4464 4465 4490 4491 4492 4498 4499 continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 542 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description False negatives and postives as a result Ticket 22180. See Full Support for Designated Initializers. Message(s): 0478 0671 0674 0675 0682 0683 0684 0685 0686 0690 0692 0694 0698 0699 0701 0703 0753 1031 1037 1053 1056 1317 2761 2762 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2791 2792 2793 2796 2797 2798 2801 2802 2803 2811 2812 2813 2821 2822 2823 2831 2832 23615 F 2833 2841 2842 2843 2846 2847 2848 2851 2852 2853 2856 2857 2858 2861 2862 2863 2871 2872 2877 2880 2881 2888 2889 2891 2892 2893 2896 2897 2898 2901 2902 2903 2906 2907 2908 2911 2912 2913 2921 2922 2923 2931 2932 2933 2941 2942 2943 2946 2947 2948 2951 2952 2953 2956 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2984 2985 2986 2990 2991 2992 2993 2994 2995 2996 3004 3204 3232 3233 3651 3790 4424 4461 Fixed false positive for message 3232 for an assignment to a non-const pointer member in initialisation of a structure. 23775 F Message(s): 3232 File scope static, ’%s’, is never modified. It could be declared const. Message 1487 will no longer be incorrectly generated in cases where the arguments of library function ’memcmp’ refer to objects that are de- clared with a storage class specifier (e.g. ’extern’, ’static’, etc). Note that 23780 F message 1487 contributes to the the enforcement of MISRA C:2012 Amendment 1 Rule 21.15. Message(s): 1487 Comparing the representations of objects of different types. A new message 1497 will be generated when the memcmp function is used to compare string objects. Note: message 1497 contributes to the 23781 E enforcement of MISRA C:2012 Amendment 1 Rule 21.16. Message(s): 1497 Comparison of a string object representation. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 543 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description A new message 1498 will be generated to report situations where a string referenced by a member of an object of type struct lconv is directly modified. Message 1498 will be generated irrespective of whether the object is obtained from a call to library function ’locale- conv’ in . Members of struct lconv that refer to strings are of type ’char *’, however they should be treated as being of type ’const char *’, to avoid undefined behaviour. Message 1498 contributes to enforce this restriction, and therefore contributes to the enforcement of MISRA C:2012 Amendment 1 Rule 21.19. As a consequence of this upgrade, the behaviour of message 1492 will also be refined and extended: message 1492 will no longer be generated against modifi- cation of struct lconv strings, but it will still be generated in all other 23788 F circumstances, and not only when direct modifications to library ob- jects are made via simple assignment, but also when they are made via composite assignments and prefix/postfix increment/decrement op- erators. As part of this upgrade, the definition of struct lconv in PRQA’s default header will also be extended to comply with the C99 and C11 standards, by adding members int_p_cs_precedes, int_n_cs_- precedes, int_p_sep_by_space, int_n_sep_by_space, int_p_sign_posn and int_n_sign_posn. Message(s): 1492 The result of library function ’%s’ is used to modify the refer- enced object. 1498 The string referenced by type ’struct lconv’ member ’%s’ is being modified. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 544 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description A new configuration option ’-errnosettingfunction’ or ’-esf’, which is fol- lowed by the identifier of a function, will be recognised. The specified function will be handled as a function that returns error information us- ing ’errno’. Note that according to the C standard the following functions are errno setting functions, and QAC will by default handle them as such: ftell, fgetpos, fsetpos, fgetwc, fputwc, strtoimax, strtoumax, str- tol, strtoul, strtoll, strtoull, strtof, strtod, strtold wcstoimax, wcstoumax, wcstol, wcstoul, wcstoll, wcstoull, wcstof, wcstod, wcstold, wcrtomb, wcsrtombs, mbrtowc. The configuration option is intended to identify any additional functions that are also to be considered errno setting. 23789 E This option will affect the behaviour of messages 2500, 2501, 2502 and 2503 and will contribute to the enforcement of MISRA C:2012 Amend- ment 1 Rules 22.8, 22.9 and 22.10. Message(s): 2500 Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. 2501 Call to ’%s’ is not immediately followed by the testing of ’errno’. 2502 Zeroing of ’errno’ is not immediately followed by a call to an ’er- rno’ setting function. 2503 Testing of ’errno’ is not immediately preceded by a call to an ’errno’ setting function. Messages 2500, 2501, 2502 and 2503 will be extended to enforce the intended sequence of actions in the handling of errno also in situations where e.g. those actions span across (1) an ’if’, ’while’ or ’do while’ statement whose body is not enclosed in curly brackets, or (2) a condi- tional operator. Message(s): 23793 F 2500 Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. 2501 Call to ’%s’ is not immediately followed by the testing of ’errno’. 2502 Zeroing of ’errno’ is not immediately followed by a call to an ’er- rno’ setting function. 2503 Testing of ’errno’ is not immediately preceded by a call to an ’errno’ setting function. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 545 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Messages 2796, 2797, 2798 and 2799 will no longer be generated for wide character handling functions. New messages 2806, 2807, 2808 and 2809 have been added to cover these wide character functions in . Message(s): 2796 Definite: Calling a standard library character handling function with an invalid character value. 2797 Apparent: Calling a standard library character handling function with an invalid character value. 2798 Suspicious: Calling a standard library character handling func- 23794 E tion with an invalid character value. 2799 Possible: Calling a standard library character handling function with an invalid character value. 2806 Definite: Calling a standard library wide character handling func- tion with an invalid character value. 2807 Apparent: Calling a standard library wide character handling function with an invalid character value. 2808 Suspicious: Calling a standard library wide character handling function with an invalid character value. 2809 Possible: Calling a standard library wide character handling function with an invalid character value. Messages 2796, 2797, 2798 and 2799 will no longer be generated for character input/output functions in and . New mes- sages 2816, 2817, 2818 and 2819 have been added to cover these character input/output functions. Message(s): 2796 Definite: Calling a standard library character handling function with an invalid character value. 2797 Apparent: Calling a standard library character handling function with an invalid character value. 2798 Suspicious: Calling a standard library character handling func- 23796 E tion with an invalid character value. 2799 Possible: Calling a standard library character handling function with an invalid character value. 2816 Definite: Calling a standard library character input/output func- tion with an invalid character value. 2817 Apparent: Calling a standard library character input/output func- tion with an invalid character value. 2818 Suspicious: Calling a standard library character input/output function with an invalid character value. 2819 Possible: Calling a standard library character input/output func- tion with an invalid character value. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 546 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Typedef declarations where the source type is omitted (e.g. ’type- def my_new_type;’) will be intrepreted as having an implicit type int (e.g. ’typedef int my_new_type’). In these cases a number of mes- sages incorrectly reporting syntax errors, constraint errors, undefined behaviour, etc., as well as ensuing duplicate occurrences of message 2051, will no longer be generated. Message(s): 0434 [S] The identifier ’%s’ has not been declared. 23820 F 0622 [C] The identifier ’%s’ has been declared both with and without linkage in the same scope. 0631 [C] More than one declaration of ’%s’ (with no linkage). 0667 [U] ’%s’ is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier. 0911 Inserted ’%s’ token in an attempt to continue parsing. 0926 [S] Expected:%s. 2051 The ’int’ type specifier has been omitted from an object declara- tion. Fixed false negative for message 2971 when the address of a struct within a union is passed as an argument to a function for which the parameter is declared as a pointer to const. 23912 F Message(s): 2971 Definite: Passing address of uninitialized object ’%s’ to a func- tion parameter declared as a pointer to const. A new message will be generated when Dataflow detects that the pointer returned by a call to one of the functions asctime, ctime, gm- time, localtime, localeconv, getenv, setlocale or strerror is used follow- ing a subsequent call to that same function. Message(s): 23941 N 2681 Definite: Using an invalidated value ’%s’ returned from a Stan- dard Library function. 2682 Apparent: Using an invalidated value ’%s’ returned from a Stan- dard Library function. 2683 Suspicious: Using an invalidated value ’%s’ returned from a Standard Library function. Fixed false positive for message 2961 for constructs involving both gcc statement expressions and initialisers. 24111 F Message(s): 2961 Definite: Using value of uninitialized automatic object ’%s’. QAC will no longer crash for constructs involving both gcc statement 24114 F expressions and initialisers. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 547 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description The calculation of metrics STM22 will be updated to: (1) Fix a problem introduced in QAC 9.1, which leads to incorrect STM22 values, includ- ing negative ones, being calculated in certain situations, for instance if a file is included which contains a #define directive whose replacement 24148 F list contains semicolons (2) Reflect the metric’s description in the QAC manual: semicolons found in preprocessor directives will not contribute to the calculation of STM22 in any circumstances, and neither will semicolons expanded into code from macro definitions. The performance of Dataflow is improved for cases where analysis of header functions and inter-function analysis is enabled and the head- ers being analysed contain inline functions that call other functions. The syntax of the -po df::analyse_header_functions option has been changed, see Header Function Analysis Message(s): 2755 2758 2761 2762 2763 2766 2767 2768 2771 2772 2773 2776 2777 2778 2781 2782 2783 2784 2786 2789 2791 2792 2793 2796 2797 2798 2799 2801 2802 2803 2806 2807 2808 2809 2811 2812 2813 2814 2816 2817 2818 2819 2821 2822 2823 24152 E 2824 2831 2832 2833 2834 2836 2839 2841 2842 2843 2844 2846 2847 2848 2849 2851 2852 2853 2856 2857 2858 2861 2862 2863 2870 2871 2872 2877 2880 2881 2882 2883 2887 2888 2889 2891 2892 2893 2896 2897 2898 2901 2902 2903 2906 2907 2908 2911 2912 2913 2921 2922 2923 2931 2932 2933 2934 2941 2942 2943 2946 2947 2948 2951 2952 2953 2956 2959 2961 2962 2963 2966 2967 2968 2971 2972 2973 2976 2977 2978 2980 2981 2982 2983 2984 2985 2986 2990 2991 2992 2993 2994 2995 2996 QAC analysis will no longer abort with a SIGSEGV fault under certain circumstances, which involve the definition of functions with parame- ters of pointer or array type, whose pointed-to type or element type is defined using a typedef, which in turn involves an array of pointers to a type that is also defined using a typedef. 24198 F Message(s): 0624 Function ’%s’ is declared using typedefs which are different to those in a previous declaration. 3448 Declaration of typedef ’%s’ is not in a header file although it is used in a definition or declaration with external linkage. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 548 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description QAC manual updated to correct reference to metrics that are generated 24256 F when Dataflow analysis is enabled Message 0284 will no longer be incorrectly generated when the glue operator ’##’ is used in a macro to produce a wide character constant from a single character.,0284„„„, 24373 F Message(s): 0284 [I] Multiple character constants have implementation defined val- ues. Message 0285 will only be generated once per character constant, against the leftmost character applicable. 24374 E Message(s): 0285 [I] Character constant contains character which is not a member of the basic source character set. Message 0859 will no longer be incorrectly generated when a function- like macro call contains exactly 31 arguments. Also, when the function- like macro call contains more than 31 arguments, message 0859 will 24375 F be generated against the 32nd and not the 31st argument. Message(s): 0859 [L] Number of arguments in macro call exceeds 31 - program does not conform strictly to ISO:C90. Message 3410 will not be generated when the occurrence of a macro parameter in a macro replacement list is preceded by the identifier of a 24376 E type, even if that type happens to be defined using a typedef. Message(s): 3410 Macro parameter not enclosed in (). Multiple definitions of the same macro performed via configuration op- tions will be properly handled. As a result, message behaviour related to these macros may improve under certain circumstances. For exam- 24377 F ple, message 0841 will be generated when a multiply defined macro is then used and undefined in the source code. Message(s): 0841 Using ’#undef’. Messages 0801 and 0802 will be generated even if the macro happens to be redefined.,0801,0802„„„ Message(s): 24378 F 0801 [C] The ’##’ operator may not be the first token in a macro re- placement list. 0802 [C] The ’##’ operator may not be the last token in a macro re- placement list. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 549 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Message 1691 will be correctly generated and message 1690 will no longer be incorrectly generated in certain situations that may involve for instance excluded section of code being on #elif or #else branches, of the null preprocessing directive not being followed by a comment. 24379 F Message(s): 1690 Null preprocessing directive used. 1691 Null preprocessing directive used in an excluded section of code. Message 3403 will be generated also when the ’!=’ operator is directly followed by another operator, without white-spaces separating the two operators. 24380 E Message(s): 3403 This sequence of operators is difficult to read without intervening spaces. Messages 3435 and 3456 will be generated against each applicable macro parameter, instead of only against the first applicable macro pa- rameter encountered in the macro parameter list. Note that message 3435 is an obsolete message. 24381 E Message(s): 3435 Parameter ’%s’ occurs more than once in the replacement list of this macro. 3456 Parameter ’%s’ will be evaluated more than once when this macro is used. Message 3608 will be generated against all occurrences of the ’#elif’ preprocessing directive; in particular it will also be generated in certain situations where ’#elif’ directive happens to be preceded by another ’#if’ 24382 F of ’#elif’ directive, whose expression evaluates to zero and which is not located within an outer ’#elif” or ’#else’ section. Message(s): 3608 Using the ’#elif’ preprocessing directive. Messages 3618 and 3619 will be generated irrespective of where the applicable directive is located; in particular they will also be generated in certain situations where the directive is located in an ’#elif’ or ’#else’ section which is excluded because the expression of an earlier ’#if’ or ”#elif’ directive evaluates to one.,3618,3619„„„ 24383 F Message(s): 3618 Whitespace used after ’#’ at the start of this preprocessing di- rective. 3619 Whitespace used before ’#’ at the start of this preprocessing directive. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 550 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Message 0811 will no longer be incorrectly generated in certain situ- ations where a glue operator ’##’ is constructed during preprocessing and used on a further series of macro expansions, but it is neither ap- 24384 F plied nor ends up being part of the preprocessed source code. Message(s): 0811 [C] The glue operator ’##’ may only appear in a ’#define’ prepro- cessing directive. 24385 F Improvements to the calculation of metrics, see Metric Improvements 24386 F Improvements to the calculation of metrics, see Metric Improvements 24387 F Improvements to the calculation of metrics, see Metric Improvements Messages 0380 and 0857 will be generated when the macro identifiers that are ’simultaneously’ defined exceeds the applicable limit. More specifically, an ’#undef’ preprocessing directive applied to a macro identifier which is defined at that point, will decrease the running count of macro identifiers being compared against the limits. 24389 F Message(s): 0380 [L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99. 0857 [L] Number of macro definitions exceeds 1024 - program does not conform strictly to ISO:C90. Message 2201 will be generated even if the first token of the line with the inconsistent indentation happens to be a macro that expands to nothing. Note that the false positives and many of the false negatives of message 2201 in QAC 9.1.0 have been cleared in QAC 9.1.1 through 24393 F ticket 23664 and that this ticket will clear a small number of remaining false negatives.,2201„„„, Message(s): 2201 This indentation is not consistent with previous indentation in this file. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 551 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description The handling of ignore/munch annotations in any of their forms (_ig- nore, _ignore_N, _ignore_paren, _ignore_semi, _ignore_at, _munch, _munch_N, _munch_paren, _munch_semi, _munch_at) will be up- dated to prevent them from expanding in unintended ways. This will also make their behaviour more consistent with QAC++. If these an- notations are being used as intended, this upgrade will not affect the behaviour of any messages, otherwise various messages may be af- 24394 F fected, as the source code will be parsed in a different way. The ignore/- munch annotations are expected to be defined as object-like macros: the _ignore*/_munch* keywords are only expected to occur in macro re- placement lists. The macro replacement list is not expected to be used for anything except to identify the macro as a user-defined skip instruc- tion. For example it is not expected to include any additional tokens to be extracted into the source code. Message 0338 will be consistently generated against each applicable escape sequence irrespective of the form and remaining content of the 24396 E including string literal and irrespective of whether the escape sequence is octal or hexadecimal.,0338„„„, Tokens ignored using the _ignore*/_munch* annotations will be consid- ered for the purposes of layout checking, in particular when examining a null statement to see if it is obscured by text on the same line. In these circumstances any of message 3138, 3139 and 3141 will be generated instead of message 3140. 24397 E Message(s): 3138 Null statement is located close to other code or comments. 3139 Null statement is obscured by code or comment on the same line. 3140 Null statement occurs on a line by itself. 3141 Null statement does not occur on a line by itself. Message 3459 will be generated instead of message 3412 whenever a macro replacement list contains a do-while-zero statement, even its loop body is a single statement (not enclosed in curly brackets). Mes- sage 1021 will be generated instead of message 3412 when a macro replacement list contains a statement expression (note that statement 24398 E expressions are a GCC language extension). Message(s): 1021 [E] A statement expression is not supported in ISO C, and is treated as a language extension. 3412 Macro defines an unrecognized code-fragment. 3459 Macro defines a ’do-while-zero’ construct. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 552 Programming Research Ltd.

Table 4.5 – continued from previous page Ticket Type Description Message 3430 will be generated against each applicable macro argu- ment instead of once only against the macro invocation. 24399 E Message(s): 3430 Macro argument expression may require parentheses. A bug will be fixed, which causes in certain circumstances message 0844 to be generated with an incorrect reference for the macro identi- fier. 24400 F Message(s): 0844 [C] Macro ’%s’ is being redefined with a different replacement list.

4.6 Ticket Summary for QA·C 9.1.1

The following table summarizes the tickets that were closed in QA·C 9.1.1. Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

Table 4.6: Ticket Summary for QA·C 9.1.1

Ticket Type Description Ability to add Justification Reason to Comment Based Suppressions and Include in Report 23502 N 4816 Justification comments are not allowed in location annotations. 4817 Justification comments are not allowed to be empty. 23562 F Forward slash no longer removed from quoted suppression label. Messages 2212 and 2214 restored to pre-9.1 behavior: no false posi- tive on braces contained within macros. 23611 F 2212 Body of control statement is not enclosed within braces. 2214 Body of control statement is on the same line and is not enclosed within braces. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 553 Programming Research Ltd.

Table 4.6 – continued from previous page Ticket Type Description Indent checker reworked to remove false positives and clarify behavior of messages. 2200, 2201 and 2211 significantly changed by removing false positives/negatives; indent-related messages are no longer emit- ted in the event of an unrecoverable parse failure. 2200 Indentation of this line is to the left of the line above. 2201 This indentation is not consistent with previous indentation in this file. 2203 This closing brace is not aligned appropriately with the matching 23664 F opening brace. 2204 ’%s’ is not aligned to match its controlling ’switch’ statement. 2207 This brace style is not consistent with ’K&R’ style. 2208 This brace style is not consistent with ’indented’ style. 2209 This brace style is not consistent with ’exdented’ style. 2211 ’%s’ is not aligned with the previously declared identifier. 2213 Matching braces appear on the same line - proper indentation would be preferred. 2215 This indentation is not consistent with configured depth. Dataflow no longer disabled for code that contains an instance of diag- nostics 3237 or 3238. 3237 [C] inline function ’%1s’ has external linkage and is defining an object, ’%2s’, with static storage duration. 23818 F 3238 [C] inline function ’%1s’ has external linkage and is referring to an object, ’%2s’, with internal linkage. 2753 As a result of error message ’%s’, dataflow analysis of the re- mainder of this function is not possible. When the -ex asm configuration option is specified, the asm language extension will be properly handled even if the source code relies on ad- ditional language extensions for nested functions or statement expres- sions. Consequently in these circumstances syntax errors and recovery 24104 F actions will no longer be reported. 0907 [S] Unexpected token. 0911 Inserted ’%s’ token in an attempt to continue parsing. 0920 Source skipped to this point after error in expression. 0926 [S] Expected:%s. QAC failure when invalid ’-forceinclude option’ or an invalid output path 24105 F was specified.

4.7 Ticket Summary for QA·C 9.1.0

The following table summarizes the tickets that were closed in QA·C 9.1.0.

RELEASE NOTES : QA·C 9.4.1 Page 554 Programming Research Ltd.

Tickets are categorized into 3 types: E– Enhancement to an existing feature. F– A fix of a bug or problem feature. N– New functionality has been introduced. Note: Where there is a large number of messages, the text for the impacted items will not be listed. Please see Messages with Modified Behavior to see the message text.

Table 4.7: Ticket Summary for QA·C 9.1.0

Ticket Type Description Support for semantics checks on statement expressions will be ex- tended, in accordance with the GCC compiler manual, see Support for GCC language extensions. 0306 0436 0563 0769 0770 0771 1021 1252 1253 11994 E 1291 1840 1862 2205 2212 2741 2742 3112 3196 3200 3203 3204 3212 3220 3345 3713 3715 3747 3757 3758 3759 3760 3790 4102 4105 4115 4116 4131 4304 4393 4394 4404 4424 4430 4440 4443 4446 4460 4470 4471 4538 4539 4558 4559 A new message 1060 will be generated instead of constraint error mes- sage 0642 when a structure with a flexible array member is declared. Flexible array members are a feature introduced by the C99 standard. New messages 1061 and 1062 will also report constraint errors when a structure with a flexible array member (and any union containing, pos- sibly recursively, a member that is such a structure) is a member of a structure or an element of an array. 12042 E 1060 [C99] A flexible array member has been declared. 1061 [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of structure member ’%3s’. 1062 [C] Structure ’%1s’ with flexible array member ’%2s’ cannot be used in the declaration of array elements. 0642 [C] ’%s’ in ’struct’ or ’union’ type may not be an array of unknown size. New messages 3636 and 3637 will be generated when octal or hex- adecimal escape sequences are not followed by another escape se- 14112 N quence or the end of the character constant or string literal. 3636 Octal escape sequence ’%s’ is not terminated. 3637 Hexadecimal escape sequence ’%s’ is not terminated. A new message 3421 will be generated when expressions with possible 14117 N side effects are used in initialiser lists. 3421 Expression with possible side effects is used in an initializer list. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 555 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description New messages 1397, 1398 and 1399 will be generated to report situ- ations where the use of C99 designated initialisers results in multiple initialisations of array elements or struct/union members. 14118 N 1397 Array element ’%s’ has already been initialized. 1398 Structure member ’%s’ has already been initialized. 1399 A union member has already been initialized. A new message 3676 will be generated when designated initialisers are 14119 N used to initialise an array object whose size is not explicitly specified. 3676 Designators are used to initialize an array of unspecified size. A new message 0892 will be generated when the occurrence of a macro parameter in a macro replacement list is immediately preceded 14127 N by the stringify operator ’#’ and immediately followed by the glue oper- ator ’##’. 0892 This macro parameter is preceded by ’#’ and followed by ’##’. A new message 0893 will be generated when a macro parameter: (1) is used as an operand of the stringify ’#’ or glue ’##’ operators, hence not subject to macro replacement, and (2) is also used otherwise, hence subject to macro replacement, in the same macro definition, and (3) 14128 N the corresponding argument in a macro invocation is subject to macro replacement. 0893 Macro parameter ’%s’ is inconsistently subject to macro replace- ment. The C99 ’restrict’ type qualifier will be parsed and treated as a keyword (consistently with e.g. ’inline’ and ’_Bool’). A new message 1057 will be generated to report occurrences of the C99 ’restrict’ type qualifier. Another new message 0669 will be generated to report constraint errors in the usage of ’restrict’. Note: syntax errors may be generated for C90 source code if the token ’restrict’ happens to be used as an identifier instead of a keyword. In this case either the source code should be updated or QAC should be configured to define ’restrict’ as a macro for a C99 compliant identifier. Note: for source code that uses the 14130 N C99 ’restrict’ type qualifier it will no longer be necessary for QAC to be configured to define ’restrict’ as a blank macro. Note: MISRA C:2012 rule 8.14 requires the restrict type qualifier not to be used. However, MISRA rules do not apply to the Standard C Library. If message 1057 is used for the purpose of MISRA compliance, it will be up to QAC configuration to suppress it for the applicable files/functions. 0669 [C] The restrict qualifier can only be applied to pointer types de- rived from object or incomplete types. 1057 [C99] The keyword ’restrict’ has been used. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 556 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description A new message 3213 will be generated to report an unused struct/u- nion/enum tag. A new message 3214 will be generated to report an unused macro. Existing message 3205 will also be generated for un- 15709 N used enum constants defined at file scope in the source file. 3213 The tag ’%s’ is not used and could be removed. 3214 The macro ’%s’ is not used and could be removed. 3205 The identifier ’%s’ is not used and could be removed. A new message 1338 will be generated when a function parameter is modified. When the address of operator ’&’ is applied to a function pa- rameter, a new message 1339 will be generated if the resulting pointer is non const, and a new message 1340 will be generated if the resulting 15711 N pointer is const. 1338 The parameter ’%s’ is being modified. 1339 Evaluating the address of the parameter ’%s’. 1340 Storing the address of the parameter ’%s’ in a constant pointer. New messages 0784, 0785, 0786 & 0787 when identifiers are not dis- tinct from macro names. 0784 Identifier ’%s’ is also used as a macro name. 0785 Identifier matches other macro name(s) (e.g. ’%s’) in first 31 15716 N characters. 0786 Identifier matches other macro name(s) (e.g. ’%s’) in first 63 characters. 0787 Identifier does not differ from other macro name(s) (e.g. ’%s’) within the specified number of significant characters. New message will be generated to report when a dynamic memory allocation function is called with an argument for memory size that is inconsistent with the size of the type of object to allocate, see Buffer Overflow Checking. 0701 Argument for memory size does not refer to ’sizeof (%s)’. 2841 Definite: Dereference of an invalid pointer value. 15753 N 2842 Apparent: Dereference of an invalid pointer value. 2843 Suspicious: Dereference of an invalid pointer value. 2844 Possible: Dereference of an invalid pointer value. 2931 Definite: Computing an invalid pointer value. 2932 Apparent: Computing an invalid pointer value. 2933 Suspicious: Computing an invalid pointer value. 2934 Possible: Computing an invalid pointer value. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 557 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description New analysis to check array arguments passed to a function when a sized array is used as a function parameter. A message will be gener- ated if an array passed as an argument to the function does not have as many elements as the array declarator of the function parameter. 2781 Definite: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call. 20191 N 2782 Apparent: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call. 2783 Suspicious: Function argument has fewer elements than the ar- ray dimension in the parameter declaration for non-inlined call. 2784 Possible: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call. QAC will be able to parse the C99 syntax for the static keyword and type qualifiers (const, volatile and restrict), which applies to indexes in array declarations for function parameters, and instead of syntax errors it will generate new C99 portability messages 1058 and 1059 and new con- straint error messages 0460, 0461, 0462 and 0463. Note that message 1058 will cover MISRA C:2012 Rule 17.6. 0460 [C] The keyword static is used in the declaration of the index of an array which is not a function parameter. 0461 [C] The keyword static is used in the declaration of an inner index 20396 N of a multi-dimensional array. 0462 [C] A type qualifier (const, volatile or restrict) is used in the decla- ration of the index of an array which is not a function parameter. 0463 [C] A type qualifier (const, volatile or restrict) is used in the dec- laration of an inner index of a multi-dimensional array. 1058 [C99] The keyword ’static’ is used in the declaration of a function parameter of array type. 1059 [C99] A type qualifier (const, volatile or restrict) is used in the declaration of a function parameter of array type. Two new messages 1485 and 1486 will be generated to report respec- tively when an object of type pointer to FILE is dereferenced and when it is explicitly or implicitly converted to a different type. Note: these messages cover MISRA C:2012 Rule 22.5, which bans the dereferenc- ing of pointer to FILE objects. Rule 22.5 is classed as undecidable, 20397 N however the combination of messages 1485 and 1486 intentionally im- poses stricter constraints than Rule 22.5, so that their enforcement is decidable. 1485 A pointer to a FILE object is dereferenced. 1486 A pointer to a FILE object is converted to a different type. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 558 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description In the event of a Dataflow analysis failure, Dataflow will no longer return error code 16 and instead produce a dataflow internal timeout message 20494 F so that analysis can continue. 2757 Could not analyze function ’%1s’. Initial restructuring to enable future use of a preprocessor common to both C and C++ analyzers, see Messages Location Changes. 0040 0041 0042 0388 0434 0669 0670 0686 0687 20522 E 0688 0744 0776 0777 0810 0930 2006 2022 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2830 3109 3111 3120 3139 3141 3209 3220 3335 3408 3602 3618 3619 4600 4641 4643 Support for C99 flexible array feature will be improved. 20747 F 1039 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 New message 3310 will be generated when a goto statement jumps to 21771 E a label declared earlier in the same function. 3310 This ’goto’ statement involves a backward jump. QAC will not abort with a SIGABRT fatal error when analysing the cast- 22094 F ing of an object to a struct/union type directly followed by access to a member of that type. A new message 4599 will be generated when a binary operator ’+’, ’-’, ’*’, ’/’, ’%’, ’&’, ’|’, ’^’, ’<’, ’<=’, ’>’, ’>=’, ’==’, ’!=’, ’?:’, ’=’, ’+=’, ’-=’, ’*=’, ’/=’, ’%=’, ’&=’, ’|=’ or ’^=’ is applied to two operands which are derived from 22496 E the same integer type but have different type names. 4599 Operands of binary operator ’%1s’ have the same type ’%2s’ but distinct type names ’%3s’ and ’%4s’. Message 0402 will no longer be incorrectly generated in certain cir- cumstances where the left hand side of an assignment is enclosed in parentheses and involves access to a struct/union member via the dot 22555 F or arrow operator. 0402 [U] ’%s’ is modified and accessed between sequence points - evaluation order unspecified. Designated initialisers referring to members in nested stuctures will be recognised even if their ordering does not reflect the ordering in the 22606 F structure definition. Consequently, under these circumstances mes- sage 0435 will no longer be incorrectly generated. 0435 [C] The ’struct’/’union’ member ’%s’ does not exist. The HTML help for messages 2777 and 2778 has been updated to be 22643 E consistent with that of 2776. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 559 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description Messages 0589 and 0907 will no longer be incorrectly generated when an enumeration type is declared and the first enumeration constant to be initialised is initialised to an integer constant expression that contains a cast to a type which is defined via a typedef. 22645 F 0589 [C] Enumeration constant must be an integral constant expres- sion. 0907 [S] Unexpected token. 1271 Using a non-int expression to define an enum constant. The GCC extension to the C language for nested function will be recog- nised, a new message 1049 will be generated for each nested function definition, and syntax and constraint errors will not be incorrectly gen- 22691 E erated. Another new message 1050 will be generated when a nested function is declared with incorrect storage class specifiers. 1049 [E] Nested functions are a language extension. 1050 [C] Nested functions cannot be ’extern’ or ’static’. Dataflow will no longer use excessive memory and exit unexpectedly when analysing functions that contain a conditional that results in a large number of branches e.g. a switch statement with many case la- bels. Messages 2751 or 2752 will be generated when the number of branches exceeds 200 and dataflow will not analyze the remainder of 22702 F the function. This applies to switch statements, nested if-else state- ments and repeated conditional return/abort()/exit() statements. 2752 This ’%1s’ results in the function being too complex. Dataflow analysis continues with the next function. 2751 This function is too complex. Dataflow analysis continues with the next function. Dataflow analysis will not be run on functions defined in headers that are subject to the -quiet option even if those functions are qualified as inline. Because of the -quiet option, messages resulting from this anal- ysis are already suppressed, so there will be no change in the mes- 22758 F sages produced by QAC. However there will be an improvement in per- formance when headers containing inline functions are quieted, and metrics STRET and STUNR will no longer be incorrectly calculated for those inline functions. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 560 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description A new message 1487 will be generated when the C standard library function ’memcmp’ is used to compare objects of different types. A new message 1488 will be generated when the C standard library function ’memcmp’ is used to compare struct objects or arrays of struct objects. A new message 1489 will be generated when the C standard library function ’memcmp’ is used to compare union objects or arrays of union objects. A new message 1490 will be generated when the C standard library function ’memcmp’ is used to compare floating point objects or 22779 N arrays of floating point objects. A new message 1491 will be generated when the C standard library function ’memcmp’ is used to compare objects referenced via pointer to void. 1487 Comparing the representations of objects of different types. 1488 Comparison of a struct object representation. 1489 Comparison of a union object representation. 1490 Comparison of a floating point object representation. 1491 Comparison of an object representation. A new message 1321 will be generated to report when the operand of 22781 N sizeof is a function parameter of array type. 1321 Operand of sizeof is a function parameter of array type. New messages 1492 and 1493 will be generated when strings from getenv, localeconv, setlocale and strerror are modified. 1492 The result of library function ’%s’ is used to modify the refer- 22782 N enced object. 1493 The result of library function ’%s’ is used as a pointer to a modi- fiable object. New messages 2500, 2501, 2502 and 2503 will be generated when the zeroing of errno, the call to an errno setting function and the testing of errno are not implemented in a strict sequence. This analysis only applies to calls of C standard library functions which are by default errno setting functions, that is: ftell, strtoumax, strtod, wcstod, strtof, wcstof, strtoimax, strtol, wcstol, strtold, wcstold, strtoll, wcstoll, strtoul, wcstoul, strtoull, wcstoull, wcstoimax, wcstoumax, fgetpos, fsetpos, mbrtowc, 22785 N mbsrtowcs, signal, wcrtomb, wcsrtombs, fgetwc and fputwc. 2500 Call to ’%s’ is not immediately preceded by the zeroing of ’errno’. 2501 Call to ’%s’ is not immediately followed by the testing of ’errno’. 2502 Zeroing of ’errno’ is not immediately followed by a call to an ’er- rno’ setting function. 2503 Testing of ’errno’ is not immediately preceded by a call to an ’errno’ setting function. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 561 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description A new message will be generated if: - a value not representable as an "unsigned char" or EOF is passed to any function in or the functions putc, putchar, and ungetc. - a value not representable as an "wchar_t" or WEOF is passed to any function in or the functions putwc, putwchar, and ungetwc. 2796 Definite: Calling a standard library function with an invalid char- 22790 N acter value. 2797 Apparent: Calling a standard library function with an invalid char- acter value. 2798 Suspicious: Calling a standard library function with an invalid character value. 2799 Possible: Calling a standard library function with an invalid char- acter value. A new message is generated when data from an external source (e.g. command line input, file, socket etc) is not checked to determine if it is a valid value, with respect to the expected limits of the value, before the 22791 N value is used in subsequent expressions. 2956 Definite: Using object ’%s’ with tainted value. 2959 Possible: Using object ’%s’ with tainted value. 22799 D Updates and clarifications to manuals. A new message is generated when the time taken for Dataflow analysis of a query within a function is greater than the timeout limit set using the ’-po df::query_timeout=’ option. This message is generated when 22813 F the option ’-po df::query_timeout_message’ is enabled in the QAC con- figuration. 2758 Query has exceeded the configured maximum: ’%1sms’. Dataflow analysis continues with the next query. STFDN counter will be computed using all unique identifiers, and each instance of literal. Not only those present in an operation. STFDT 22913 F counter will no longer count values coming from outside the function body. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 562 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description A new message 0681 will be generated when an assignment opera- tion is performed between different members of the same union, except when (1) the two members have compatible types and overlap exactly, or (2) either or both members are accessed via pointers. Note: dataflow analysis is required to handle access via pointers, and these cases are already covered by complementary dataflow messages 2776, 2777 and 23067 N 2778. 0681 [U] Assignment between two incompatible members of the same union. 2776 Definite: Copy between overlapping objects. 2777 Apparent: Copy between overlapping objects. 2778 Suspicious: Copy between overlapping objects. False negatives for aggregate initializers not followed immediately by a comma. 1276 An integer constant is being converted to floating type on as- signment. 1290 An integer constant of ’essentially signed’ type is being con- verted to unsigned type on assignment. 1292 An integer constant of ’essentially signed’ type is being con- 23185 F verted to type char on assignment. 1294 An integer constant of ’essentially signed’ type is being con- verted to type _Bool on assignment. 1296 An integer constant of ’essentially signed’ type is being con- verted to enum type on assignment. 1298 An integer constant of ’essentially signed’ type is being con- verted to floating type on assignment. Existing messages 0778 and 0779 will be extended and new messages 0788 and 0789 will be generated to report conflicts involving macro identifiers which do not differ from each other (or from tokens that they should not replace) within the first 31 characters (C90), the first 63 char- acters (C99) or the specified number of significant characters. Note that this upgrade will support coverage/enforcement of MISRA C:2012 Rule 5.4 and MISRA C-2004 Rule 5.1. 23210 E 0778 [L] Identifier matches other identifier(s) (e.g. ’%s’) in first 31 characters - program does not conform strictly to ISO:C90. 0779 [U] Identifier does not differ from other identifier(s) (e.g. ’%s’) within the specified number of significant characters. 0788 This identifier, ’%s’, is used as both a macro name and a function-like macro parameter name. 0789 Identifier matches other identifier(s) (e.g. ’%s’) in first 63 char- acters - program does not conform strictly to ISO:C99. continued on next page

RELEASE NOTES : QA·C 9.4.1 Page 563 Programming Research Ltd.

Table 4.7 – continued from previous page Ticket Type Description The right argument of a comma expression will be evaluated, so that if it is a constant expression, then the result of the comma operation will also be handled as a constant expression. A number of different 23250 F messages may be affected by this update. For instance some false negatives of message 1476 will be cleared. 1476 Range of possible enum values suggests this test is always false. A new message 0894 will be generated when the controlling expression of a #if or #elif preprocessing directive does not evaluate to 0 or 1. Note 23298 N that this upgrade will cover MISRA C:2012 Rule 20.8. 0894 #%s directive controlling expression does not evaluate to zero or one. When -v or –version option is enabled, the version number for QAC is 23304 E printed to standard out. QAC manual has been updated to clarify the output generated by QAC 23351 D when the -metrics option is disabled QAC performance degredation for projects with large numbers of 23413 F header files. 23416 F QAC performance degredation due to hash table collions since 8.1.2 Fix to correct analysis of casts that change the const qualification of pointers to qualified object types resulting in both false positive and 23432 F false negative messages. 0311 0312 0570 0594 0597 1822 1823 1824 1842 1843 1844 1852 1853 1854 1863 1864 1882 3892 Fixes to modeling of paths by QAC to address two issues: incorrect ’out of date’ check in Framework GUI for a file including signal.h and 23541 F suppressions not working for files included with relative paths or paths with different case to that of the file stored on disk.

RELEASE NOTES : QA·C 9.4.1 Page 564 Programming Research Ltd.