|  | 
 | ||||
|        | |||||
|  | |||||
| 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 exported record
declaration did not have to match that of the corresponding elsewhere.
This could allow record fields 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
            functions 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 elsewhered
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.
saved.
%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 exported 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 cases.
          
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 sinks, 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 exported type, but not itself exported.
          
-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 signals 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.
          
referents could not be written to a
            stream attached to a referent, even though referents 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.
          
joins 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.