elsewhere
definition of an overriding
function, without providing an implementation of the function. This is contrary to the specification. A compile-time error is now triggered.
-gc-threshold
command-line argument was limited to 32-bit values. This is inappropriate on 64-bit platforms.
insertion-break
declaration would lead to an illegible error message.
=
form of the pattern capture operator was being given precedence in expression contexts such as drop
and take
. This prevented correct programs from compiling.
specified attributes
shelf was not allowed in a process
rule even when applied to an element event.
output
is used at the top-level of a markup sink
function, since this can fail at run-time.
do markup-parse
block nested inside either a do sgml-parse
or do xml-parse
would corrupt the type of #current-dtd
.
overloaded
dynamic
function
on one type, without also exporting any other overloaded
dynamic
function
s on other unrelated types.
!=
and the type of the arguments was string
or stream
. This could cause programs to behave incorrectly.
name of
operator was applied to the current elements
pseudo-shelf.
copy
or copy-clear
had to have its type disambiguated. The type context of the right-hand side of copy
or copy-clear
is now determined by the left-hand side of the action.
is specified
test was applied to the attributes
shelf reference.
doctype is
test.
has key
was applied to an element qualifier in an element test. This is now a syntax error.
#content
does not trigger the Attempting to process content twice in one rule error even if it consumes the entire rest of the content.
save
declarations could, on rare occasions, produce corrupted outputs.
markup-element-event
could cause an internal error or memory corruption.
output #content
action could be used after output %c
with no error. This is now flagged as a run-time error.
#content
source twice in the same markup rule could cause a segmentation fault during the execution.
create-element-declaration
an element declaration produced by parsing a DTD could lead to a segmentation fault at run-time.
-gc-keep-memory
command-line option could cause a segmentation fault at the end of program execution.
accept
header in HTTP requests.
MailInBoxGetMessage
was occasionally ignoring the lines of the message body that started with the '+' character.
&
can now be applied to two markup-buffer
values.
omrelaxng
library refused to compile a valid RELAX NG schema using a combine
attribute on a start
node only in the including schema.
l
and u
modifiers were being rejected on %eq
. This was contrary to the specification.
import
declaration, a non-sensical error message was emitted.
value
argument was passed as a shelf-class argument to a shelf-class function, and the result of the function was used in a repeat over
.
do select-type
is missing the required alias.
new
expression of type markup sink
appeared as an argument of a string sink
or markup sink
function.
attribute
alias in a repeat over attributes
or repeat over specified attributes
loop was being converted to a string
value and back upon assignment to a shelf. This lead to the loss of the attribute's declaration in the target shelf.
optional
argument initializers did not agree between a dynamic
function and one of its overriding
functions. The correct error message is now emitted
content
was used on the left-hand side of a set
, in a context where no shelf called content
was previously-declared.
name of
could not be declared dynamic
.
overloaded
infix-function
with either argument declared to have type markup-element-event
could not be invoked using an element expression in that position.
dynamic
function.
do select-type
.
new
to an optional
value
function argument, inside an is specified
test.
repeat over
loop. This would lead to incorrect results at run-time.
%c
or #content
if it happened to be used as the argument of an overloaded
function call. This could cause correct programs to fail to compile.
content
appeared in a process
rule, in certain contexts.
markup source
function's signature did not match its declaration.
stream
field of a record
instance was used in a branch of a conditional operator, in the head of a using output as
scope.
markup source function
used by do markup-parse
, the scope within do markup-parse
terminated without a proper cleanup. This could lead to resource leaks, internal errors, or segfaults.
create-element-event
an attribute shelf item with an empty string for a key would cause a segmentation fault at run-time.
attributes of create-element-event
could lead to a segmentation fault at run-time.
create-unspecified-attribute
multiple times could lead to an infinite loop.
declaration of attributes of create-element-event
was not always correctly initialized. This could lead to a run-time error or segmentation fault.
#content
after the first was interrupted could drop some data content.
create-specified-attribute
to a specified-attribute
and then accessing its value could cause an internal error at run-time.
do scan
action from a markup-error
rule could cause an internal error at run-time.
always
clause to a coroutine function which called another function returning the same type of value, a program error could be issued even though there was no error.
join
to a function that pattern matches ahead on the source could leave the source in an inconsistent state, potentially leading to corrupt output or a segmentation fault.
create-element-event
only to fetch an attribute
of the result could cause a segmentation fault.
#content
was only partially consumed, the remaining unpaired #markup-end
events would appear in reverse order.
close
a stream
attached to a referent
by the end of the nested-referents
scope the referent was bound to could lead to a segmentation fault at run-time.
#content
, and then getting processed by a do markup-parse
in a different markup sink
coroutine, could cause an internal error and segmentation fault.
FTPConnectionRemoteOutputFile
or FTPConnectionRemoteInputFile
, the operations could fail with error OMFTP002
.
netutil.host-ip
function in the omnetutil library would return a useless value when querying for the address of the local host.
stream
where one of type markup sink
was expected. This is contrary to the specification, and is
no longer allowed.
signal to
action inside a catch
clause could cause
incorrect code generation, possibly leading to an internal error at run-time.
specified attributes
pseudo-shelf.
key of
operator was the
sole operation applied to a shelf that had been assigned a value.
with
document-element
appeared out of sequence in a do sgml-parse
or do xml-parse
action.
read-only
).
dynamic
function
definition whose export
status did not match a previous elsewhere
definition of
the same function.
string
set
was left unclosed.
opaque
type occurred in a branch of the conditional operator, in a context where a string
source
or markup source
was expected.
string
source
function call with a shelf-class argument (e.g., read-only
) was passed as a value
string source
argument to an outer function call, and the argument of the inner function call was an
alias from do select
or do select-type
.
overloaded
function was defined on a required
record
type.
dynamic
function
could be defined both with and
without an overloaded
qualifier. This is not well-defined, and is no longer allowed.
specified-attribute
was compared to a value of type integer
.
attributes
in the guard of a rule.
repeat over
loop could crash the compiler if one of the aliased shelves was a shelf literal.
repeat over
. This is contrary to the specification. This had been an error in versions of OmniMark
previous to 10.0.0. The error has been re-instated.
new
was applied to an invalid value in the header of a using
scope.
repeat over
of a shelf with a fixed-size of zero could
lead to a cascade of incorrect compile-time errors.
#current-input
in process
rules, even though it was not attached and bound to fail at run-time.
is specified
) to the
result of a function call could trigger an internal error at compile-time.
is keyed
test was applied to the attributes
shelf.
attributes
stream
test.
markup-element-event
inside a
module that didn't import other modules would cause a compile-time internal error.
sgml-in
and sgml-out
actions were erroneously
affecting the validating XML parser as well.
external-text-entity
rule triggered by
do markup-parse
could lead to an invalid memory access.
#current-dtd
and #doctype
are set to
incompatible values, and the subsequent program error thrown by #content
was caught, it was possible
to trigger an internal error or incorrect behaviour.
#current-markup-event
on an element with a
namespace-binding attribute was leaking memory.
attributes
or specified attributes
of
an element created by create-element-event
could trigger an internal error or a segmentation fault
at run-time.
signal throw
performed a throw
back to the original coroutine through intermediates.
#content
.
do markup-parse
#current-input
inside a markup sink function
could cause a memory leak or a segmentation fault.
do markup-parse
to a markup source
containing external text entity references in some circumstances could lead to a segmentation fault.
#content
would lead to a segmentation
fault if it included the end of an external text entity, but not its beginning.
repeat over attributes
action could segfault on
an element that has both declared but unspecified, and undeclared but specified attributes.
create-element-event
and create-element-declaration
, could cause a segmentation fault when
processed by do markup-parse
.
attributes
shelf was passed to a function as a read-only
argument.
#content
twice inside a do markup-parse
scope lead to a segmentation fault.
create-element-event
did not
have xmlns-name
assigned even if its attributes specified one.
ATTLIST
declaration was reported as a markup
error in validating XML parser, even though the XML specification allows it.
do markup-parse
to a markup source function
with an argument that was another string source function
followed by drop
could cause an
internal error.
external-text-entity #document
rule could in some rare
circumstances cause a segmentation fault in the interpreter during the loading time.
//
or /./
character sequence could trigger a memory corruption or segmentation
fault.
execute
function in the omprocess
library would not always allow the invoked process to consume all of its standard input, when used on
Windows platforms.
uri.canonical
was properly working only on local URIs,
with no server.
uri.canonical
was stripping the double-slash sequence
into a single slash even before the path segments. The result was an incorrect URI.
uri.canonical
was normalizing the fragment portion of
the URI. The function now conforms to the standard and leaves the fragment unmodified.
maxOccurs
integer attribute value.
external-text-entity
rules for entities whose system identifier was an empty string.
domain-bound global
is never save
d.
export
keyword was
incorrect.
#current-input
and #current-output
were not being tracked properly, allowing invalid programs to
compile. This is contrary to the specification, and has been
fixed.
record
type could not be elsewhere
d
after it had been fully declared.
key of
on a single-item unkeyed record
field
could lead to a segmentation fault at
run-time.
stream
in the header of using output as
.
value-start
and value-end
positional patterns were not
allowed in processing-instruction
rule headers.
with current sgml-dtd
was used with subdocument
in do
sgml-parse
.
new
where only one is allowed.
optional
argument in the
first position for a dynamic
or overriding
function. This is
not well-defined and is now rejected.
dynamic
and overriding
functions. This
is contrary to the specification, and is no longer
allowed.
save
a shelf literal was misleading.
save
to a
built-in shelf was incorrect.
function
imported from a module
conflicted with a require
.
copy
from a fixed-size
shelf to a variable-size shelf, even when the former was larger than the
latter. This cannot succeed at run-time and must be
disallowed.
of
, as for example
length of
, were being rejected if they appeared as a function argument
and the following function argument was heralded by the second token of the
two-token keyword.
record
declaration could
differ from that given in the elsewhere
declaration. This is contrary
to the specification and is no longer allowed.
using input as "%c"
was not always tracking the
use of %c
, which could lead to correct programs not
compiling.
overloaded
switch
function with a
non-parenthesized argument list was not being accepted when compiling patterns
for take
, drop
, and matches
.
previous is
test in various
disallowed contexts were always reporting the content
keyword as
being disallowed.
markup-comment
and marked-section
rules could
affect the boundaries of translate
rules' pattern matching across the
module boundaries. This is now restricted only to the rules within the same
module.
remove
action could fail when applied to a shelf item created by
using new
inside the scope.
content-start
and content-end
patterns in translate
rules
were not firing only at the beginning and end of element content, as they were
supposed to.
#content
of an element with an XML
namespace change could trigger an internal error.
new
could fail when the maximum shelf
size was reached, even when no new item was being added to the
shelf.
do markup-parse
.
stream
was opened, when in fact it was
closed.
#content
was sometimes
incorrectly reported as a part of the SGML declaration.
markup-error
rule.
external-text-entity
rule and then
continuing to feed the parser could cause a segmentation fault.
do markup-parse
command applied to a join of
xerces.xml
external parser and another markup source could cause a
segmentation fault at run-time.
markup source
after catching a throw could
erroneously lead to a markup event being thrown in a wrong coroutine.
previous is
test always failed on the top-level element, and
its occurrence
was always one.
previous is
test could return random results inside a do
markup-parse
consuming events from parses that were not active any more.
throw
from an external
string
source function
was not being propagated if the function was called in the
setup of a pattern matching environment.
uri.parse
did not accept a URI that contained nothing but
the URI fragment.
markup-buffer
was written to through multiple sinks, the order of
the written string data was determined by the order in which the sinks were
closed. This could lead to unexpected results, so this has been changed so that
the data order depends on the order in which the sinks are open.
relaxng.compile-schema
.
letters
declaration.
field
references had been omitted from the
grammar.