5.2. What’s Fixed in 4.2.0
[Critical]: System-stopping issue, such as a crash or data loss.
[Major]: Significant issue with no easy workaround.
[Minor]: Issue that usually has a workaround.
[Trivial]: Small issue, such as a typo in a log.
5.2.1. Fixes Related to Generated Code (Multiple Languages)
5.2.1.1. [Major] int8 constants were not supported because type was mapped and parsed as an unsigned value
Support for int8 was incomplete in Code Generator. As a result, unexpected warnings and errors may have occurred.
The issue is fixed; int8 constants compile and work as expected.
[RTI Issue ID CODEGENII-1495]
5.2.1.2. [Major] Code Generator did not fail if discriminator of a union was a 64-bit integer
As documented in the known issue 64-bit Discriminator Values Greater than (2^31-1) or Smaller than (-2^31) not Supported, using a 64-bit integer with or without a sign as a union discriminator is not supported. However, Code Generator generated code without errors.
To avoid possible issues in production code, Code Generator will now detect and fail if the discriminator of a union is a 64-bit integer.
[RTI Issue ID CODEGENII-1864]
5.2.1.3. [Minor] Include flag used without a space caused Code Generator to fail *
When using the flag -I
without a space between the flag and the
included folder, Code Generator failed, reporting that it was not
supported. This issue was introduced in Code Generator 4.1.0
(Connext 7.1.0). This issue is fixed; you can successfully use the
-I
flag without a space (for example, -I./myInclude/
).
[RTI Issue ID CODEGENII-1867]
5.2.1.4. [Minor] Identifiers collision detection was not case insensitive when using strict
The IDL spec says:
When comparing two identifiers to see if they collide:
--Upper- and lower-case letters are treated as the same letter. Table 7-2 defines the
equivalence mapping of upper- and lower-case letters.
--All characters are significant.
Identifiers that differ only in case collide, and will yield a compilation error under
certain circumstances. An identifier for a given definition must be spelled identically
(e.g., with respect to case) throughout a specification.
And for the keywords it says:
Identifiers that collide with keywords are illegal.
This behavior was not implemented in Code Generator. Code Generator did not fail if you generated code for the following IDL, in which there is a collision between two identifiers and another collision between an identifier and a keyword.
struct mystruct {
long BOOLEAN; // Collision with the keyword "boolean"
};
struct MYSTRUCT { // Collision with the identifier "mystruct"
long m1;
}
You can now get Code Generator to fail when these types of collisions
occur in an IDL file, by using the command-line option -strict
.
[RTI Issue ID CODEGENII-1237]
5.2.1.5. [Minor] Code not stored in specified output directory on Windows when IDL was in a Symlink *
In Windows environments, when generating code using a specified output folder for an IDL located in a Symlink folder, the code was stored in the Symlink folder instead of the specified output directory. This issue was caused by a JDK bug. We have applied a workaround; the generated code is now stored in the ouput directory when specified.
[RTI Issue ID CODEGENII-1891]
5.2.2. Fixes Related to Generated Code (C#)
5.2.2.1. [Major] Generated code did not compile when a negative number was assigned to an int8 constant in C#
When a negative value was assigned to an int8 constant in C#, compilation errors occurred.
This issue is fixed; int8 constants are now fully supported in C#.
[RTI Issue ID CODEGENII-1593]
5.2.2.2. [Major] C# Copy Constructor did not create a deep copy of alias of collections
The C# Copy Constructor created a shallow copy of the alias of collections. This issue is fixed; C# Copy Constructor now does a deep copy of all members in an aggregated type.
[RTI Issue ID CODEGENII-1895]
5.2.2.3. [Minor] C# generated examples may not have used latest patch available
The example code generation for C# defined a vanilla release version number for C# libraries instead of the version of the latest patch installed. This issue is fixed. The generated example code will now use the latest patch installed for the current version of the product.
[RTI Issue ID CODEGENII-1850]
5.2.3. Fixes Related to Generated Code (Java)
5.2.3.1. [Major] Java serialized sample min or max size may have returned an incorrect value for union mutable types using XCDRv1 encoding
When Code Generator generated Java code for a mutable union, the
methods get_serialized_sample_max_size
and
get_serialized_sample_min_size
from the class TTypeSupport
may
have returned an incorrect value, when using XCDRv1. This issue occurred
because Code Generator was not adding the sentinel to the actual
current alignment with the biggest or smallest member size of the union,
resulting in an incorrect alignment. This issue is now fixed.
[RTI Issue ID CODEGENII-1820]
5.2.3.2. [Major] Java serialized sample size may have returned an incorrect value for union mutable types using XCDRv1 encoding
When Code Generator created Java code for a mutable union based on an
enum, the method get_serialized_sample_size
may have returned an
incorrect value. This error occurred because Code Generator
incorrectly determined that the header for the union’s member needed an
extended Id, though it may not have been needed. This issue is fixed.
[RTI Issue ID CODEGENII-1825]
5.2.3.3. [Major] Min and max size may have returned incorrect values for union mutable types using XCDR2 encoding
The methods get_serialized_sample_max_size
and
get_serialized_sample_min_size
may have returned an incorrect value
when Code Generator generated Java code for union mutable types using
XCDR2. This issue was caused by a problem with the LC
value that
was being used for the header of the union’s members. This issue is now
fixed.
[RTI Issue ID CODEGENII-1828]
5.2.3.4. [Major] Java type suffix not added to hexadecimal constant values
When Code Generator created Java code for a long long constant
value, and the value was specified as a hexadecimal, the generated code
did not add the suffix L
to specify that the value is a Long value.
This is now fixed.
For example, for this idl:
const long long LONG_CONST = 0x7fffffffffffffff;
Code Generator now generates:
public class LONG_CONST {
public class LONG_CONST {
public static final long VALUE = 0x7fffffffffffffffL;
public class LONG_CONST {
public static final long VALUE = 0x7fffffffffffffffL;
}
[RTI Issue ID CODEGENII-1905]
5.2.3.5. [Minor] Incorrect header size for get_serialized_key_max_size in java generated code
When generating Java code for a mutable type, Code Generator has to
add a header for each of its members. The size of the header varies
depending on whether XCDR1 or XCDR2 is used; however, Code Generator
always added the same header size to get_serialized_key_max_size
.
This issue occurred only when using XCDR2 and mutable types. This is now
fixed.
[RTI Issue ID CODEGENII-1873]
5.2.3.6. [Minor] Incorrect max serialized size value in generated Java code for wstrings when using XCDR2
Code Generator incorrectly added a terminating Null character in the
method get_serialized_sample_max_size
when generating Java code for
XCDR2. As a result, the max serialize size value returned by this method
was incorrect. For example, the following struct should return the max
serialize size 16, but Code Generator calculated 18.
struct PluginStruct {
struct PluginStruct {
wstring<4> member1;
struct PluginStruct {
wstring<4> member1;
};
This issue is fixed; the get_serialized_sample_max_size
method
returns the correct size for XCDR2.
[RTI Issue ID CODEGENII-1887]
5.2.4. Fixes Related to Generated Code (Python)
5.2.4.1. [Major] Generated Python code produced syntax error for types in a different directory
When an IDL had an import to another IDL that was in a different directory, and Code Generator generated code for that IDL for Python, the generated code produced a syntax error. This is now fixed; Code Generator produces correct code when an IDL is imported from another directory.
[RTI Issue ID CODEGENII-1847]
5.2.4.2. [Major] Topics for types inside a module in a Connext Python application may not have communicated with other Connext applications
A Connext Python application may not have communicated by default with a Connext application in another programming language if the following conditions were true:
The types were defined inside a module
The type information was not propagated on the wire, which caused the type matching algorithm to default to type-name-based matching instead of type-compatibility-based matching
This problem was caused by an inconsistent registered type name for
Python topics. For example, a type Foo
inside a module Bar
was
registered by default as Bar_Foo
instead of Bar::Foo
. This
problem has been resolved.
If you experienced this problem, you need to re-generate your Python types from your IDL types.
[RTI Issue ID CODEGENII-1866]
5.2.4.3. [Minor] Python keywords used in IDL were not prefixed *
Code Generator did not prefix IDL names that conflicted with Python keywords. For example, for the following IDL, errors occurred because Code Generator did not prefix the if name in the Python code:
struct if {
long l;
};
The issue is fixed; IDL names are now prefixed if they clash with Python keywords.
[RTI Issue ID CODEGENII-1906]
5.2.5. Other Fixes
5.2.5.1. [Minor] Code Generator did not fail for optional sequences in Ada
Code Generator did not fail when generating code for an optional sequence in Ada, even though optional sequences are not supported in Ada. Now, Code Generator will fail if the IDL/XML/XSD file contains an optional sequence.
For example, this IDL will now fail for Ada:
struct MyStruct {
@optional
sequence<short> m1;
};
This is a known issue that will be fixed in a future release. For now, the workaround is to use an empty sequence to emulate an unset optional.
[RTI Issue ID CODEGENII-1666]
5.2.5.2. [Trivial] Command-line option tips not printed if you entered an invalid option *
In release 7.1.0, if you entered an invalid Code Generator command-line option, Code Generator did not print out the helpful list of valid command-line options. This regression has been fixed.
[RTI Issue ID CODEGENII-1868]
* This bug does not affect you if you are upgrading from 6.1.x or earlier.