The last released version of the ASN1C compiler in the version 5.7x series was 5.75. These are the last changes that made it into that release:
- Fixed bug Java BER message dump logic. If message contains
indefinite lengths with EOCs then the generated dump is incorrect
(EOCs were just ignored and offset was calculated incorrectly).
(PR# 000382)
- Fixed bug in C/C++ streamed BER decode logic generation. If an
element is a SEQUENCE with no elements (empty) and is encoded with
indefinite length, then the code with matching EOC was generated
incorrectly. (PR# 000377)
- Modified logic to generate rtkey.h file to always generate
file, even if license is unlimited. It is necessary to fix problem
when user has unlimited license but wants to use limited SDK
libraries. (PR# 000376)
- Fixed performance issue in C/C++ PER encoding logic.
Performance was found to be worse then earlier ASN1C versions.
Reason was repeated checking of an environment variable which was
not necessary. (PR# 000375)
- Fixed bug in C XER/XML code generation. If element has name
"unknown" then the generated names table *_ElementIDs contains
duplicate *_unknown_ID name (because *_unknown_ID is added
automatically); changed to *__unknown_ID. (PR# 000374)
- Fixed problem with generated SAX code for C XML/XER: if an
element of SEQOF/SETOF is forward-referenced then the element's SAX
handler was referenced incorrectly. This caused C compilation
errors. (PR# 000373)
- Fixed bug in generation of import statements for compact Java
code generation. (PR# 000372).
- Fixed C# compact runtime library link error with Octet String
type generated code. Constructor for string value was missing. (PR#
000371).
- Fixed bug in Java code generation for BER indefinite length
decoding. (PR# 000367)
- Fixed bug in which incorrect BER decode C/C++ code was
generated for SEQ OF/SET OF in the case events handlers were used.
In this case the returned status from the generated decode function
call inside the loop was not tested and imay cause infinite loop.
(PR# 000366)
- Fixed bug in encoding of XML character data in Java & C#:
if character data contains '<', '&', etc then these symbols
MUST be escaped as "&", "<", etc. Otherwise, encoded XML
file is not well-formed. (PR# 000361)
- Fixed bug in the C/C++ decode logic generated for invocation of
event handlers for optional elements. All handler callbacks for the
element (startElement, data, and endElement) should not be called
if the element is not present. endElement was being invoked in some
situations. (PR# 000344).
- Modified C# event handler code generation to invoke a second
callback on open type items with real type name when table
constraint decoding was done. (PR# 000331).
- Fixed Java and C# PER code generation bug for Integer type with
value range constraint union/set. (for example: TGD::=INTEGER
(0|15..269)). (PR# 000319 and 000325).
- Fixed bug in which C/C++ compilation of application with
-D_COMPACT option did not work correctly. (PR# 000320).
- Fixed bug in C/C++ code generation. If -cfile option is used
with -prtToStr, compiler was not adding #include
"rtPrintToString.h" to the generated C file. (PR#
000302).
- Bug in Java and C# generated BER decoding logic. If open type
is encoded with indefinite length then the last open type's EOC was
not parsed at all and further decoding failed. (PR#000300 and
000301).
- Fixed bug is which error count was not reported correctly by
compiler. Generation of common C/C++ files contained errors but
compiler said compilation was successful. (PR# 000297).
- Fixed C/C++ code generation bug for NamedInteger and Enumerated
type with max 32-bit unsigned integer value of named variable. e.g.
Type ::= INTEGER { min(0), max(4294967295)} -- 4294967295 had
problem. (PR# 000294)
- Fixed bug in BER C/C++, stream code generation. If option
-static is used in conjuction with -stream and -ber, then the
generated code for decoding of extension elements is incorrect.
'ASN1OpenType extElem' is generated instead of 'ASN1OpenType
*extElem' in header file, but the decode logic is still generated
like extElem1 is a pointer. (PR# 000292)
- Fixed bug in XSD code generation for INTEGER type with
extensible size constraint. e.g. ( 0..255,...). (PR#
000289).
- Fixed bug in XSD code generation in which C/C++ reserved names
were being altered with underscores. Name for XSD should not be
changed. (PR# 000288).
- Fixed bug in C# compact code generation (-compact) in which
classes were not being generated for PDU types in certain
situations. (PR #000286)
The following changes were made between v5.74 and v5.73:
- Fixed bug in Java compact code generation (-compact) in which
classes were not being generated for PDU types in certain
situations. (PR #000285)
- Fixed errors in setting type code in C# and Java event
handlers. (PR #000281, #000265, #000264, #000263).
- Fixed memory leak in C/C++ limited run-time that occured in
license check routine. (PR #000271).
- Modified C/C++ BER decode tag match functions to not log an
error if a tag match on an optional element fails. (PR
#000269).
- Updated documented procedure for decoding a series of messages
in a loop in the ASN1C C/C++ User's Guide. (PR# 000266).
- Changed use of backward slash "\" to forward slash "/" in C#
filename to support C# code generation on Linux platform. (PR#
000262).
- Fixed C/C++ makefile generation logic (-genmake) to include
Asn1External / Asn1EmbeddedPDV files in the list of files when they
are generated. (PR #000259).
- Fixed generation of C/C++ free functions to check for null
pointers in functions in places where members in a structure are
freed. This was needed because it was possible for these functions
to be invoked with partially decoded messages following a decode
error. (PR #000258).
- Capability to print to string was added for C# code generation
(Changed Print() function base class to TextWriter from
StreamWriter) . (PR#000257).
- Fixed bug in C/C++ code generation for SEQUENCE type with {
RootElementGroup ExtensionElementGroup RootElementGroup } elements.
This caused the CSTA Phase III API to not work correctly. (PR
#000254).
- C libraries compiled with the IBM xlc compiler were added to
the AIX package (before, only gcc-compiled C libraries were
available). Also 'xlc64' and 'xlC64' targets were added to provide
64-bit libraries for AIX (NOTE: these libraries will work ONLY on
AIX 4.x, they are not compatible with AIX 5). (PR#
000247).
- Fixed C# and Java code generation for explicitly referenced
types (i.e. references of form
<ModuleName>.<TypeName>). (PR# 000245,
#000244).
- Fixed bug in which constraint checks were not being done in
Java on SEQUENCE OF / SET OF fields with size constraints. (PR#
000238).
- Fixed bug in which Java compilation of generated encode method
was failing in the case of a type that has a constraint but is not
tagged. For example:
- CountExtentType ::= IntegerOrNullList (SIZE(2))
(PR# 000237). - Fixed infinite loop in compiler which occurs on definitions
such as the following:
Decimal ::= XSD.Decimal
(PR# 000236). - Fixed bug in XML encoding in which SEQUENCE OF/SET OF OCTET
STRING was being encoded as space-separated list (C/C++/Java/C#).
(PR# 000221)
- Fixed documentation on C/C++ type used for extensibility fields
(...) in ASN1C C/C++ User's Guide. Was incorrectly indicating type
was Asn1OpenType when in fact Asn1RTDList was used (list of
Asn1OpenType). (PR# 000217)
- Fixed bug in XER/XML code generation for OPERATION/ERROR macro
elements. (PR# 000216).
- Fixed bug in Java Asn1Time.setTime method - daylight saving
time offset was not taken into account when diffTime is calculated,
it led to incorrect Generalized and UTC Time strings. (PR#
000215)
The following changes were made between v5.73 and v5.72:
- Version 5.73 package upgraded to contain C/C++ .NET DLL's for
both the 2002 and 2003 versions of .NET (previously, only 2002
DLL's were included). Also, both debug and release DLL's are
included (previously, only release DLL's were included).
- Installation of C/C++ deployment run-time libraries was changed
to install libraries in lib_opt subdirectory instead of overwriting
SDK libraries in lib subdirectory.
- Fixed bug in BER decoding in detecting out-of-order elements
within SEQUENCE constructs. Changes done for all languages (C/C++,
Java, C#). (PR #000205, 000204, 000203, 000172, 000171)
- Added code generation for C and C++ writer and reader programs
for streaming BER. Previously, -genwriter -genreader -ber -stream
generated incorrect code for reader/writer. (PR #000202)
- OSCSocket/OSCSocketStream/ASN1BERSocketStream classes updated
to fix socket ownership problems. OSCSocket by default is
responsible to close the socket, streams do not close the socket
connection. (PR# 000201)
- Fixed bug in C/C++ run-time in which berDecStrmMatchTag
function was not filling in error parameters on unexpected tag
error condition. (PR# 000200)
- Modified C/C++ test code generation logic to populate character
string variables using direct assignment of string literal values
instead of memory allocation and copy.
- Fixed bug in C/C++ test code generation logic in which memory
was not being allocated for dynamic array elements in some cases.
(PR# 000197)
- Fixed problem of slow decoding of Asn1External/Embedded types
in Java. Generated code was changed to use a StringBuffer class
instead of String. (PR# 000190)
- Fixed problem in C/C++ BER code generation in which a crash
sometimes occurred when rtNewContext was used to allocate a context
and an open type was encoded within the generated code. (PR
#000189)
- Fixed problem in which run-time license binary data file
(acv57lic.dat) was not working with C++ version of library. (PR#
000187)
- Fixed bug in Java and C# PER decode logic in which unaligned
BIT, OCTET, and UTF-8 strings were not being decoded correctly.
(PR# 000186)
- Fixed bug in C/C++ test generation logic in which binary data
for OCTET or BIT STRING was not being copied correctly. (PR#
000183)
- Fixed an intermittent crash in C/C++ run-time having to do with
the use of the rtMemReset memory allocation function. (PR#
000182)
- Performance of C/C++ print-to-string functions was improved by
using memory buffer streams with print-to-stream logic. (PR#
000181)
- Fixed an infinite loop problem in C# that occurred in the
Asn1DecoderBuffer class end of buffer check. Problem occurred when
stream read method returned zero length. (PR# 000179)
- Fixed bug in C/C++ BER encode and decode of certain
parameterized types. Bug occurred when automatic tagging was used.
DummyReference items within parameterized types required explicit
tagging in this case which was not being done. (PR#
000176)
- Fixed bug in C/C++ test code generation in which NULL type was
causing a compiler crash. (PR# 000175)
- Fixed warnings caused by use of g++ compiler with -Wall option.
Warnings were generated for C++ destructor and free functions for
ASN.1 CLASS definitions. (PR# 000174)
- Fixed bug in C# code generation of event handlers for open type
fields. (PR# 000170)
The following changes were made between v5.72 and v5.71:
- Fixed C/C++ PER encode/decode size constraint checking bug. In
cases such as the following:
OctStr ::= OCTET STRING (SIZE(0..50))
OctStr2 ::= OctStr (SIZE(10..20))
The generated encode function for OctStr2 always returned a constraint violation error. This was also true for sized BIT and character string types (PR# 000168). - Fixed bug in C/C++ PER code generation in which -lax option was
causing incorrect PER encode/decode methods to be generated. This
was caused by suppression of visible constraints required to do the
encoding properly (PR #000166).
- Added missing implementation of rtNewContext C run-time
function (PR #000165).
- Added C/C++ _NO_INT64_SUPPORT macro to easily turn off int64
type support. If this option is defined, ASN1INT64 is mapped to the
C 'long' datatype and ASN1UINT64 is mapped to 'unsigned long' (PR
#000164).
- Fixed C run-time memory-management template file
(rtMemHeapSubst.c). This file allows users to use an alternate
memory management scheme. Incorrect types were used in parameters
of some functions (int instead of size_t) (PR #000163).
- Fixed bug in C/C++ PER constrained integer and character string
encoding. Problem occurred on nested constraints such as the
following:
IntConst ::= INTEGER (10..100)
IntConst2 ::= IntConst (20..30)
Encoder for IntConst2 was using base type range (10..100) instead of defined type range (20..30) which led to incorrect encodings. A similar problem was fixed for character strings with permitted alphabet constraints in this form (PR #000162). - Fixed Java and C# DER/PER/XER code generation for Big Integer
with DEFAULT value (incorrect constructor and Equals method) (PR
#000159 and #000157).
- Fixed compiler crash that occurred when INTEGER types with huge
constraints (numbers with more than 127 digits) were used (PR
#000158).
- Fixed bug in code C/C++ PER encode function generation for 'SET
OF ComplexType' constructs. The second argument of the generated
function ("value") was being passed by value instead of by pointer
as it should have (PR #000154).
- Fixed C/C++ PER documentation which was referring to the use of
deprecated functions.
The following changes were made between v5.71 and v5.70:
- Added extensibility handling logic for XER code generation for
all languages (C/C++, Java, and C#).
- Added sample programs to demonstrate use of Visual Basic .NET
with C# code generated for common language run-time
(CLR).
- Added cpp/sample_per/nbapParser sample program to demonstrate
use of table constraints with a SAX parser to parse a 3GPP NBAP
message.
- Fixed bug in streaming encoding of BER C/C++ short unsigned int
in the range (128..255) (PR #000140).
- Fixed bug in XER/XML code generation in which "SEQUENCE OF name
Type" construct was not being handled correctly (PR#
000129).
- Fixed bug in C# and Java BER decode of SEQUENCE type extension
element (PR #00128).
- Fixed an ASN1C crash when -maxcfiles was used in conjunction
with -genReader or -genWriter command line option (PR
#000133).
- Fixed memory leak in C XER/XML decode function generation
logic. asn1Sax_<>_free function was not called from
asn1XD_<>/asn1XMLD_<> functions (PR
#000137).
- Fixed AIX linker warning "ld: 0711-224 WARNING: Duplicate
symbol: asn1XmlSax_<>_bits_dict" (PR #000138).
- Fixed problems in C/C++ makefile generation in which "-I ../.."
relative include not being added and "CCFLAGS" not being set for
C++ code gen (PR #000127).
- Fixed bugs in generation of C++ parser code when enumerated
types are present.
- List/Array/DynamicArray configuration option support for C/C++
code generation.
- Fixed XER/XML C/C++ code generation bugs for dynamic/static
configuration option.
- C# code generation: using statement generation fix for imported
modules.

