What's fixed

What's fixed in OmniMark 11.0

What's fixed in the OmniMark 11.0 compiler

  • The compiler incorrectly accepted an alias to an attribute fragment without the prefixing attribute keyword, leading to incorrect output.
  • An internal error was triggered at compile-time if a shelf-class function taking specified attributes as an argument appeared in the header of a repeat over loop, and was followed by another repeat over loop, any markup parsing construct, or a variety of other block-level language constructs.
  • A compile-time error was incorrectly triggered if an insertion point of after [0] was used when creating a new item on a record field.
  • An internal error could be triggered at run-time if %c was passed to a string source or markup source function, and the result of this function involved in further processing.
  • A using prefix with an indexed attributes reference would trigger a compile-time error.
  • A declare data-letters declaration was being allowed in a program file after executable code had been encountered. This is contrary to the specification, and can lead to undefined behaviour or compile-time internal errors.
  • In certain circumstances, the compiler did not emit a warning when save was not applied to a domain-bound global shelf.
  • An overloaded prefix function could not be invoked if the first argument was an element qualifier.
  • An internal error could be triggered at compile-time if a syntactically-invalid catch declaration was later referenced in the program.
  • Applying the indexer lastmost to an attributes expression would lead to an internal error at compile-time.
  • An insertion point for an expression-level new was not being parsed correctly if it appeared in a pattern context.
  • An internal error could be triggered at compile-time if a conversion-function or an infix-function was invoked in the pattern of a find rule.
  • An internal error was triggered at compile-time if a has key test was applied to the result of new on a record field.
  • Using a shelf literal in the header of a pattern rule without disambiguating its type could trigger an internal error at compile-time.
  • An internal error could be triggered at compile-time when the pattern of a lookahead not could not fail (e.g., white-space*) and was embedded inside a more complex pattern.
  • A throw from a function invoked in the header of a translate rule was being discarded.
  • If name of was passed to a function expecting a shelf-class argument, a non-sensical error message was emitted or, under certain circumstances, an internal error could be triggered at compile-time.
  • The compiler now verifies if the specified source file is readable before beginning to compile. Previously, this could lead to a confusing scenario where the Batch Compiler reported that there were compile-time errors, whereas in reality the source was simply non-existent.
  • A warning is now emitted if #current-output is encountered on the right-hand side of put, since this can lead to confusing output.

What's fixed in the OmniMark 11.0 runtime

  • Consuming the #current-input of a markup sink function joined with another markup source could lead to an internal error in some rare situations.
  • Applying save or save-clear to a shelf being used in a repeat over loop would incorrectly leave a connection between the inner shelf and the outer shelf. This would lead to an error at run-time.
  • Applying xerces.xml to #current-input within a string source function would cause an internal error after the parse.
  • Feeding a do markup-parse with multiple duplicated markup-external-text-entity-event regions with no preceding markup-external-text-entity-reference-event could cause a segmentation fault.
  • Using a #xmlns qualifier in an open element test outside of an active parse would lead to a segmentation fault at run-time.
  • A segfault could occur at the end of execution in programs that consumed large amounts of memory.
  • Functions create-element-event and create-specified-attribute could cause a segmentation fault if given an empty string value for an attribute declared as ID or NAME.
  • The error message thrown by create-element-event in case of an invalid attribute now reports the invalid attribute value.
  • Emitting processed #content into multiple markup sink and encountering a resolution failure for an external text entity in one of the sinks could cause an internal error and a segmentation fault.
  • Large run-time memory consumption could result in a segmentation fault in rare ciscumstances.
  • Using -brief and -version on the command-line at the same time would result in OmniMark silently exiting. These options now conflict.
  • The well-formed XML parser was dropping the parsed DEL (code 0x7F) character from the input content.
  • The SGML parser was silently accepting erroneous external identifiers with no space between the PUBLIC or SYSTEM keyword and the following quoted string. A markup warning is now emitted.
  • The well-formed XML parser was setting #doctype to the name of the root element of the document instance even if the preceding DOCTYPE declaration was present. The DOCTYPE declaration now takes precedence.

What's fixed in OmniMark 11.0 libraries

  • When validating against a W3C schema or RELAX NG schema, the omxerces markup parser could trigger a segfault at run-time if the same element name was re-used for different contexts.
  • If an OASIS Catalog maps an XML entity to a relative URI, the URI is now resolved as relative to the location of the catalog. If it is still relative and cannot be found, it will later be resolved as relative to the location of the referencing XML entity.
  • The omxerces library has been patched to address CVE-2015-0252. See CVE-2015-0252.
  • The omxmlwrite library was producing invalid XML for any input text fragment ]]>.
  • Function omrelaxng.compile-schema was failing on certain valid RELAX NG schema that used deeply nested attribute definitions.
  • The resolution preference specified in the oasis.compile-parsed-catalog call was not propagated to delegate catalogs and next catalogs.