asmaloney / asmaloney/libE57Format
Spec disagrees with sample files about `indexStartOffset = 0`
- Dominant language
- C++
- Stars
- 191
- Forks
- 82
- Avg merge
- 7h 21m
- Merged PRs (30d)
- 1
Description
Spec says in **TABLE 35 Fields for the CompressedVector Header** about `indexStartOffset`:
> The file offset to the root level index packet in this binary section (in bytes). Shall be in the interval (0, 263).
and in section **5.2.1** about intervals:
> An open interval is denoted _(a, b)_, where _a_ ≤ _b_. An open interval includes the numbers between the endpoints _a_ and _b_, but does not include the endpoints themselves.
So `indexStartOffset = 0` should be illegal as per spec.
But the sample file [`bunnyFloat.e57`](http://sourceforge.net/projects/e57-3d-imgfmt/files/E57Example-data/bunnyFloat.e57/download) from http://www.libe57.org/data.html seems to set `indexStartOffset = 0`.
Just sharing this info here for now.
---
(I'm currently investigating why Autodesk ReCap can import `bunnyFloat.e57` but errors on importing that file after rountripping it through CloudCompare which uses `libE57Format` for writing. I suspect that ReCap cannot read E57 index packets, and thus found the above.)
Contributor guide
Research direction
Start by comparing the `indexStartOffset` wording in TABLE 35 and section 5.2.1 with the value in the `bunnyFloat.e57` sample. Review how libE57Format writes and reads E57 index packets, then compare the CloudCompare round-tripped file with the original; done means the spec-versus-sample discrepancy and any relevant compatibility behavior are documented clearly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- data
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100