|
|||||
|
|||||
Related Topics | |||||
What's fixed |
string
function outputs to its inherited
#current-output
.
initial
clause of an optional
argument for a function
contained %c
, and the function
was invoked in an
element
rule without specifying an argument, the compiler rejected the
program on the basis that %c
was not being processed in the element
rule.
key of
shelf query was applied
to a field
access whose record
was specified as an expression.
elsewhere
declaration of a record
type that
extended a parent type which was in turn referenced as the type of a field
of the original record
type.
do select-type
statement applied to an instance whose dynamic type is
not explicitly specified as one of the clauses could fail to execute its parent
clause.
||*
appeared in a
shelf initializer.
#console
was encountered in a program.
#current-input
is a markup source
, it could
be used in a context expecting a string source
. This is contrary to the
specification, and is now disallowed.
import
declaration.
overriding
function
definition
could lead to an internal error at compile time.
dynamic
function.
as opaque
qualifier on an export
ed record
declaration did not have to match that of the corresponding elsewhere
.
This could allow record
field
s to be visible in contexts where
they should not have been; this is contrary to the specification and should not
have been allowed.
&
was encountered
where a |
was expected, and vice versa.
catch
was declared to take a
value string source
argument, and subsequently used in an
external-text-entity
rule.
number of
was being applied to a fixed-sized shelf was being
emitted too aggressively, leading to too many false warnings.
-depend
command-line
option could not be opened, an incorrect error message was output, followed by
a segmentation fault.
optional
markup source
argument in an elsewhere
definition of a function.
optional
markup source
function
argument specified a constant string
as an initial
value.
optional
markup
sink
argument in an elsewhere
definition of a function.
#suppress
was used as the
initializer for an optional
string sink
argument, and both
elsewhere
and as
definitions of the function were present in
the program.
processing-instruction
rule failed to match the input, and a subsequent one
succeeded.
string sink
function that passes its
#current-input
to a string source
function, whose output it then
parses, could cause an internal error in OmniMark.
has key
test to fail even
though
an item existed with such a key.
markup-error
rule could cause a memory leak.
#markup-error-total
if a markup-error
rule signalled its #current-markup-event
to another markup-parse
.
%c
consumed in a streaming fashion inside a data-content
rule would be interrupted by CDATA
and SDATA
entities.
do markup-parse
consuming #content
of an element
that changes the namespace could cause an internal error.
processing-instruction
rule or a
translate
rule containing the named
pattern.
<
in
attribute values.
document-element
parameter would lead to a
segmentation fault at run-time.
omxmlwrite
library could lead to
a character entity in the output appearing in a context where one is not allowed.
string
to markup-buffer
has been
added to markup utilities.
markup-buffer
values can now be compared for equality of their
contents using the =
and !=
operators.
relaxng.compile-schema
could return an invalid schema object for
some heavily recursive RELAX NG schemata.
omxmlwrite
library are now emitted in
a hexadecimal representation.
named
and valued
components. These could never match, and so are now rejected at compile time. This may
cause programs that previously compiled successfully to stop compiling. The solution is to remove the
offending pattern.
%c
, suppress
, or #content
.
do sgml-parse
appeared in the wrong order.
optional
argument pass-through can now be used in a context
where a conversion-function
would otherwise have been invoked. Previously, this had led to a
run-time error.
namecase
declaration could affect whether or not a
program compiles. This declaration is deprecated, and has no effect on program compilation or program
execution.
|
appeared where a ||
was expected.
new
operator as an argument to a function could
lead to erratic behavior at compile time.
new
on a field access in an open
action could
lead to erratic results when the type of the shelf item was incorrect.
name of
operator in an erroneous context could
lead to erratic results.
dynamic
function
s could lead to a segmentation fault at run-time.
match
clauses of a do scan
block.
function
predefined as dynamic
and later defined
as not dynamic
could trigger an internal error if the latter had no arguments.
name of
was
applied to a function.
set
was
applied to a function other than a string sink
or markup sink
function.
#content
or #current-markup-event
was used in a shelf context (e.g., passed to a function as a read-only
argument).
markup-region-event
was being described as user-defined.
conversion-function
that was needed in an importing module, an inaccurate error message was emitted.
throw
to a
catch
target had a comma-delimited argument list and was missing an argument.
optional
argument of type integer
had an initial
clause with a type other than integer
.
instance
keyword is used to invoke the well-formed XML parser.
#content
were causing
memory leaks.
string sink function
whose
#current-input
is being consumed by a string source function
could cause a
subsequent signal from the latter coroutine to be misdirected.
signal throw
destination
coroutine, the always
clauses in the signalling scope would not run.
signal throw
actions with no intervening
output could end up being uncaught if the target coroutine delegated its work to another coroutine.
string source
coroutine wrapped in a string sink
coroutine could cause a segmentation fault.
previous is
could fail
inside a do markup-parse
.
stream
was
attached with referents-allowed
to a referent
that had previously been attached to a stream
with referents-allowed
.
%c
in a different coroutine than the one
that started the parse could lead to uninitialized memory access.
signal throw
on a coroutine that has already
terminated could cause a segmentation fault.
markup sink
, markup
source
, and markup sink
return types, each invoking the next in turn, could cause a
segmentation fault.
copy
and save
applied to a stream
containing
referents
could lead to incorrect output or internal errors.
%c
directly could behave differently from
passing it as a value markup source
function argument and outputting the argument.
copy
or save
of a stream opened
with referents-allowed
and then closed could lead to a later segmentation fault.
%c
and #content
in a
markup-comment
rule did not behave the same.
markup source
function in a pipeline by an
equivalent function of markup sink
type could cause markup event signals to not be caught.
element
rule triggered from a markup
sink
function could cause a memory leak.
external string source function
in a
markup-processing pipeline could cause an internal error and bad memory access.
#current-markup-event
in an element
rule from
inside a %c
scanning scope yielded the last parsed element instead of the element that triggered the
rule.
do markup-parse
of the element events,
could lead to an internal error or wrong behavior.
do
markup-parse
and the original parse was killed immediately after that, an internal error would result.
omxerces
library, for valid UTF-8 input.
uri.parse
in OMURI
library, when given a relative path, was incorrectly providing both the relative and absolute path in its
uri-components
argument.
utf8.code-point
and utf8.multi-byte-char
in the library omutf8 accepted so-called overlong sequences.
uri.parse
function from omuri
now decodes the hex-encoded characters.
uri.parse
in OMURI
library failed to parse URIs with registry names containing special characters.
do select
construct.
record
instance were expanded in the variable view before
stepping over an action that releases the record
instance, debugging could not continue.
remainder
function
arguments did not show in the variable view during debugging.
string sink
function
was invoked.
Use default working directory
checkbox in
OmniMark launch configuration was always reverting to active state.
-reqkeygen
command-line option was outputting a wrong error message when used incorrectly.
referent
value.
element
end tags were duplicated in the right pane of the Parsing Sources view.
constant
values has been improved.
number of
.
constant
shelf item could not be used as an initializer in an elsewhere
d
function definition.
constant string
shelf appeared in a pattern.
markup source
called within the body of a do xml-parse
or
do sgml-parse
scope was unable to signal
markup events.
constant
shelf declared with an empty initializer is no
longer allowed in a value context: a compile-time error is now emitted. Such a
reference would have triggered a run-time error in previous versions of
OmniMark.
integer
from the command-line using the -c
command-line option.
escape
declaration in a module could affect the importer, and vice versa.
%g
format item on an optional string
function argument inside of a
conditional operator could lead to an incorrect run-time error about accessing
an unspecified optional argument.
escape
declaration in a program containing a not-reached
with no argument or
an asserg
with no argument could cause the otherwise valid program to be rejected.
with
modifier
specifier were incorrect.
conversion-function
did not specify an external library binding.
#base
and #full
element rule lists were not both
being searched.
stream
output
.
referents-allowed
could exhaust the number
of file handles available.
#dtd
external text entity to a
file could lead to a segfault if the #content
from the failed parse was fed to
do markup-parse
.
#content
in a data-content rule led to an internal
error.
#content
.
%c
could cause an internal error.
cdata
or rcdata
marked section could lead to a segfault at run-time if no
rule fired in response to the event.
string source
literal directly passed as a value string source
to a function did not match value-start
.
external-text-entity
rule was using #library
and #libpath
shelves from the module where the markup was
first parsed, not from the module with the do markup-parse
action that
triggered the rule.
%c
was scanned or
submitted in presence of a markup-error
rule.
markup-error
rule that performs a signal
throw
of its #current-markup-event
into a markup-processing pipeline
could cause an internal error.
#content
was interrupted more than once and then continued from inside a
markup comment region.
creating sgml-dtds
or creating
xml-dtds
clause was used, the content had to be processed by %c
or
suppress
, as #content
attempted to parse beyond the DTD end.
do markup-parse
was directly applied to a %c
, external text entity references were being attached to the inner parse
instead of the outer one. This could lead to input corruption and internal errors.
signal throw
sent to a coroutine that was
delegating their handling to another coroutine could not always get through.
external-text-entity
rules triggered by a do markup-parse
were inheriting domain-bound global
variables from the
domain of the original parse, not the parse that triggered them.
save
d.
%v
on a CDATA attribute could cause an
internal error if a translate
rule suspended to a different coroutine.
&#nnn;
could be corrupted when
captured by #content
and then recaptured.
markup-parse
before being handled, an internal error was reported.
do markup-parse
action was applied to a
malformed stream where a markup-comment
region contained markup events,
an internal error was reported instead of a program error.
last content is #data
would return an incorrect
result if the only data were character entity references.
string source
function
feeding a markup parse could trigger a segmentation fault at run-time.
markup-comment
rule was processed by
another coroutine.
LF
) characters inside the #content
of a markup-comment
, invalid-data
, or markup-region ignore
would be expanded into the CR LF
character
sequence.
signal
thrown to a chain of alternating markup sink
and markup source
functions could end up uncaught.
processing-instruction
rules continue to be
triggered as before, to maintain backwards compatibility.
marked-section ignore
)
still fire, as before. This limits any backwards compatibility issues.
#doctype
was not being attached for a well-formed XML parse, even though the
input contained a DTD.
dtd-start
and dtd-end
rules were not being fired when a well-formed XML parse
was launched and a DTD was present in the input. This could make it difficult to
write generic markup handling code. The behavior is now consistent across all
parse types.
ns
attribute was not being inherited for include
elements.
x
or g
format item.
name of notation named "a"
.
throw
or a run-time error from the body of an external-data-entity
rule would lead to unpredictable run-time behavior.
string sink
could not be used as a cast.
%c
was not streaming properly when it appeared embedded in a
larger string.
with utf-8
argument to do sgml-parse
was
erroneously being evaluated after the input to the parse had begun executing. This contrary to earlier
versions of OmniMark, where it was evaluated before the input. The proper order of evaluation has been
restored (i.e., with
utf-8
is evaluated before the input).
with utf-8
modifier was being ignored when using the
subdocument
option of sgml-parse
.
binary
operator or the complement
operator were used in a shelf reference context, an internal error would be triggered.
new
applied to a stream
shelf was passed as a shelf-class argument to a function.
with id-checking
parameterization was being allowed when
launching the well-formed XML parser. This is contrary to the specification.
dynamic
and/or overriding
functions could lead to misleading error messages.
do markup-parse
could trigger a
segmentation fault at compile-time.
void
action was applied
to an invalid type was misleading.
save
or save-clear
to a string source
or string sink
was confusing.
catch
could not be declared following the declaration of a
record
type export
ed as opaque
.
#xmlns-names
is now declared as a string
shelf, rather than as a stream
shelf. This change can be reflected in certain error
messages.
repeat over
with an alias, no warning was emitted about it being otherwise unused.
else
clause
appeared in a do select-type
block containing an invalid type name as one of its case
s.
else
clause of a do ... done
block, the line number reported in the error message would
point to the last
action of the previous block.
string sink
identity cast (i.e., casting a string
sink
expression in a context requiring an expression of type string sink
) would lead to an
internal error at
compile-time.
match
clause of a do
scan ... done
block, the line number reported in the error message would point to the last action of the
previous block.
repeat over
two shelves of differing
sizes, if the larger shelf was declared variable
. This is contrary to the specification and contrary
to statements made in the documentation.
repeat
over
where a pseudo-shelf or a variable-size shelf was also present (e.g., attributes
), an invalid
error message was triggered, claiming that the shelves have different sizes, even when the pseudo-shelf was
also empty.
and
infix operator by a user
declaration, and then used it between two string sink
s, would no longer compile. Such a program is
valid and should be accepted.
optional value string sink
function argument could not
have an initial
clause containing a conditional operator.
overriding
of a dynamic
function was dispatching on an export
ed type, but not itself export
ed.
-depend
command-line option now includes
external function library information in its dependency graph.
overloaded
function was not being correctly parsed by the OmniMark compiler. This would lead to a syntax
error. A workaround was to insert additional parentheses around the argument.
void
on a string source
expression could lead to
inefficient execution.
read-only stream
in a string
sink
context could lead to segmentation fault.
string
value in a string
sink
context could lead to segmentation fault.
variable
and/or size
with a
shelf declaration could lead to a confusing error message.
initial
as a function
argument herald was not being handled properly in various contexts. This would lead to the rejection of correct
programs.
optional
string
sink
argument initialized to a stream
would lead to a segmentation fault at run-time.
xmlns-change
rule in a multi-module program, where the main
module ends with a function, could cause all rules in other modules not to fire.
external-text-entity
rule would lead to a segmentation fault.
external-text-entity
rules and
external-data-entity
rules could lead to unpredictable behavior in later parts of the program.
throw
or a run-time error from the body of an external-data-entity
rule would lead to unpredictable run-time behavior.
catch
clause arguments was confusing.
read-only stream
to a function expecting a value string sink
argument would lead to a confusing error message.
value switch
argument
was aliased in a repeat over
loop. A workaround was to drop the alias and use the argument name
directly.
read-only stream
was
used in the header of a using output as
did not make sense.
counter
was used as a type herald, the error message
thereby triggered referred to integer
as the type.
int32
was used as a type herald, the error message
thereby triggered referred to integer
as the type.
take
on a string source
on the right-hand side
of a matches
could lead to the string source
being entirely consumed.
#current-input
or #current-output
in a
using
shelf item association would trigger an internal error at compile-time.
#current-output
was accessible in the body of a markup sink
function. This is contrary to the specification.
markup sink
function was being rejected on the left-hand
side of set
.
record
types were being
assigned.
join
in a find
rule could trigger an incorrect
compile-time warning, and could also negatively impact performance.
repeated
(||*
) in a pattern was not being compiled
properly; this would lead to inefficient execution at run-time.
g
format item is
encountered alone in a string; the use of the g
format item in this way is redundant, and should be
eliminated.
string
in a
g
format item referenced the wrong line in the program.
require
qualifier was encountered in a shared
module.
set new
action on a record
shelf was not constructing intermediate values.
external-text-entity
rule in OmniMark 8 was run in a
coroutine whose parent was the current element
rule, in contrast to the correct input domain parent
coroutine in earlier versions of OmniMark. The behavior has been corrected.
sgml-in
and sgml-out
were being
incorrectly propagated to XML parses launched as children of a parent SGML parse.
output
action
before trying to consume its input, it could be left suspended in that position. This caused problems if the
suspension preceded a catch
clause that was supposed to handle signal
s coming through its
input.
string
was returned
from a function, and the string
was a run-time constant (e.g., the name of an external string
sink
attachment).
#markup-error-count
and #markup-warning-count
were not local to the current parse in case of multiple co-routining parses.
throw
from a string source
function used by a do xml-parse
could cause a memory leak.
stream
attached to a referent
unclosed by
the end of the referent
scope could lead to a segmentation fault.
markup-error
rule could cause the
subsequent markup error reports to leave out the exact error locations.
status of last subelement is
inclusion
test could return an incorrect result.
log
directive in a markup-error
rule launched from
one parse could affect the logging of a different markup-error
rule.
referent
s could not be written to a
stream
attached to a referent
, even though referent
s had been enabled.
stream
attached to a referent
that had previously been assigned a value with referents-allowed
, was being appended to the
previously-assigned value rather than replacing it.
name of #suppress
would lead to an internal error at
run-time.
#suppress has name
would lead to an internal error at
run-time.
#current-input
in a
string sink
function was interrupted by a signal
, it could not be resumed if the take
operator was being used.
element
rule was fired, OmniMark would report an error
message with no file name and line number.
new
could lead to a run-time
error about accessing a non-existent shelf item.
%13#
) to propagate to the output: this is contrary to the XML specification.
signal
sent to multiple coroutine sinks (combined into a
single sink by the & operator) at the same time stopped its propagation as soon as one of the target
coroutines suspended to any coroutine other than the signalling one.
output-to
at the top-level of a string
source
function called as the argument to file
would lead to a segmentation fault at run-time.
%c
was run in a separate coroutine, the modifiers were ignored.
notation
in a DTD scanned by the
well-formed XML parser would trigger an internal error.
translate
patterns erroneously matched a content-end
when content was interrupted by a processing instruction, comment, or marked section.
signal
thrown from a markup rule could cause an internal
error.
string sink
function
with referents-allowed
was passed to a second function as a value string sink
argument, and
the latter function terminated without yielding to its argument. Typically, this meant the argument was not
accessed in the body of the second function.
join
s would lead to a segmentation fault at
run-time.
string sink function
that parses its #current-input
.
throw
occurred in a
markup-error
rule and a processing instruction was being parsed by the well-formed XML parser.
markup-comment
rules were present in a program, the
text of every markup comment that did not trigger any of the rules would be submitted to translate
rules, when it should have been suppressed instead.
notation
declaration was encountered.
--
in comments; this is contrary to the specification.
notation
was triggering a markup
error in a well-formed XML parse; this is contrary to the specification.
notation
in a DTD
scanned by the well-formed XML parser would trigger an internal error.
doctype
keyword.
cgiGetQuery
could fail with a program error for certain inputs.
HttpRequestSetFromUrl
in the OMHTTP library did not correctly parse a URL if the query string component contained an @
sign.
Related Topics
|
Copyright © Stilo International plc, 1988-2010.