You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by "Steve Lawrence (JIRA)" <ji...@apache.org> on 2018/07/02 16:40:00 UTC

[jira] [Created] (DAFFODIL-1960) RepUnboundedParser incorrectly handling points of uncertainty

Steve Lawrence created DAFFODIL-1960:
----------------------------------------

             Summary: RepUnboundedParser incorrectly handling points of uncertainty
                 Key: DAFFODIL-1960
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-1960
             Project: Daffodil
          Issue Type: Improvement
          Components: Back End
    Affects Versions: 2.1.0
            Reporter: Steve Lawrence
             Fix For: 2.2.0


The RepUnboundedParser currently creates two marks: startState and priorState. The priorState mark changes as we go through each repetition of the array. The startState mark never changes. If an error occurs during a repetition and a discriminator *IS NOT* set, we reset to the prior mark, effectively backtracking the single failed repetition and keep all successful repetitions of the array. However, if an error occurs during a repetition and a discriminator *IS* set, then we backtrack the entire array back to the startState mark.

This behavior is not correct. This behavior treats the beginning of an array as if it were a point of uncertainty, but that is not the case. Only each element of the array is a point of uncertainty. So there is no need for the startState mark. It should be removed, and if a repetition fails and a discriminator is set then we should simply discard priorState mark and backtrack to whatever point of uncertainty enclosed the array (i.e. just return from the parse call and let containing parsers handle it).

We should also examine the other repetition parsers and ensure they have the correct behavior.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)