@@ -585,32 +585,33 @@ internal class StructuredCborParser(internal val element: CborElement, private v
585585 listIterator = layerStack.removeLast()
586586 }
587587
588+
588589 override fun startArray (tags : ULongArray? ): Int {
589590 processTags(tags)
590591 if (currentElement !is CborList ) {
591592 throw CborDecodingException (" Expected array, got ${currentElement::class .simpleName} " )
592593 }
593- isMapStack+ = isMap
594- layerStack+ = listIterator
594+ isMapStack + = isMap
595+ layerStack + = listIterator
595596 isMap = false
596597 val list = currentElement as CborList
597598 listIterator = list.listIterator()
598- return list.size
599+ return - 1 // just let the iterator run out of elements
599600 }
600601
601602 override fun startMap (tags : ULongArray? ): Int {
602603 processTags(tags)
603604 if (currentElement !is CborMap ) {
604605 throw CborDecodingException (" Expected map, got ${currentElement::class .simpleName} " )
605606 }
606- layerStack+ = listIterator
607- isMapStack+ = isMap
607+ layerStack + = listIterator
608+ isMapStack + = isMap
608609 isMap = true
609610
610611 val map = currentElement as CborMap
611612 // zip key, value, key, value, ... pairs to mirror byte-layout of CBOR map
612613 listIterator = map.entries.flatMap { listOf (it.key, it.value) }.listIterator()
613- return map.size // cbor map size is the size of the map, not the doubled size of the flattened pairs
614+ return - 1 // just let the iterator run out of elements
614615 }
615616
616617 override fun nextNull (tags : ULongArray? ): Nothing? {
@@ -681,7 +682,7 @@ internal class StructuredCborParser(internal val element: CborElement, private v
681682
682683 // If we're in a list, advance to the next element
683684 if (listIterator != null && listIterator!! .hasNext()) {
684- currentElement= listIterator!! .next()
685+ currentElement = listIterator!! .next()
685686 }
686687
687688 // Store collected tags for verification
@@ -707,6 +708,7 @@ internal class StructuredCborParser(internal val element: CborElement, private v
707708
708709 override fun skipElement (tags : ULongArray? ) {
709710 // Process tags but don't do anything with the element
711+ // TODO check for maps
710712 processTags(tags)
711713 }
712714}
0 commit comments