|
|||||
Corrections for the OmniMark CI 4.0 release | |||||
------ |
The following list of OmniMark errors found in V3R1a have been fixed in 4.0:
If an external function signals an exception in nested do sgml-parse
's, memory is leaked.
Programs that contained both sgml-error
rules and explicit references to the #sgml
stream leak memory when the sgml-error
rules are executed.
Writing single values larger than 8 Kb to the #sgml
stream leaked memory.
Parsing documents that have a document element that has a CDATA attribute leaked memory.
Programs that write to the #sgml
stream from an sgml-error
rule leaked memory.
Programs that accessed data attributes leaked memory.
Specifying an unknown element in a do sgml-parse instance with document-element unknown-element
caused OmniMark to crash.
In process programs, the state of the #sgml
stream is attached after a non-nested do sgml-parse
action was executed. It should be unattached.
Accessing the dtds
shelf with a nonexistent key in a do sgml-parse instance with dtds key "unknown-key"
causes OmniMark to crash.
The SGML stream isn't being flushed for find rules that contain embedded conditions such as find "&" (when number of current elements > 0)
. This means that the test can potentially fail when it should have succeeded.
The following code, which accesses an optional, unspecified function argument, does not report an access error in the second action:
output x when x is specified output x
Passing a constant as a read-only function parameter causes OmniMark to crash.
Function argument heralds sharing the same prefix are not being properly distinguished. Consider this definition:
define function foo sk1 read-only switch n1 optional sk value counter n2 optional as ...Now calling the function so:
foo sk 1The herald "sk" is mistaken for the herald "sk1".
Executing the submit
action in a function invoked by an sgml-error
rule causes an internal error.
The method OMXF_GetBinaryOrderingValue now returns the correct binary ordering.
Programs that try to match patterns of size > 2k when using external source functions fail.
Using the copy
action to copy to a modifiable shelf argument corrupts the shelf.
The following code, where "arg" is an optional function argument, causes an internal error. In V3R0 the internal error is 86-440 and in V3R1a it is 86-335:
output sample when sample is specified do when sample is specified output sample done
The following code, which creates and removes the same keyed item from a shelf with an initial -size of 0, causes OmniMark to crash:
global stream s var initial-size 0 process new s key "some" new s remove s new s key "some"
Copying one stream shelf to another changed the target shelf's name for some error messages.
OmniMark enters an infinite loop while writing to a file when the disk is full.
Assigning to a shelf with a declared size greater than 1 from the command line was not being reported as an error.
Stream items assigned multi-part values via a set action did not have the stream's name attached to the stream item. The internal stream #ANONYMOUS name was instead attached.
The test do when file x is writable
applied to a file that does not exist, where the directory it names does exist and is writable, now correctly returns the value true.
The following incorrect code is incorrectly reported:
process set #first to true
The error message now refers to switch #last
instead of #first
.
The test attributes has key x
applied to an element that has no attributes causes OmniMark to crash.
Trying to match entity names with the following pattern when there are only lowercase letters causes OmniMark to report an "insufficient memory error" and then terminate:
translate entity named (lc+ [lc or digit]+=>lower) => ent-name
Empty strings are incorrectly parsed in command-line argument files.
The expression do when file <my-file> matches <string expression>
does not work.
An OmniMark program is limited to 8 MB of constant strings.
The rule translate entity valued any+ named any+
is declared to be an error.
------ |
---- |