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)