in src/main/java/com/epam/parso/impl/SasFileParser.java [461:491]
private void processPageMetadata(int bitOffset, List<SubheaderPointer> subheaderPointers)
throws IOException {
subheaderPointers.clear();
for (int subheaderPointerIndex = 0; subheaderPointerIndex < currentPageSubheadersCount;
subheaderPointerIndex++) {
try {
SubheaderPointer currentSubheaderPointer = processSubheaderPointers((long) bitOffset
+ SUBHEADER_POINTERS_OFFSET, subheaderPointerIndex);
subheaderPointers.add(currentSubheaderPointer);
if (currentSubheaderPointer.compression != TRUNCATED_SUBHEADER_ID) {
long subheaderSignature = readSubheaderSignature(currentSubheaderPointer.offset);
SubheaderIndexes subheaderIndex = chooseSubheaderClass(subheaderSignature,
currentSubheaderPointer.compression, currentSubheaderPointer.type);
if (subheaderIndex != null) {
if (subheaderIndex != SubheaderIndexes.DATA_SUBHEADER_INDEX) {
LOGGER.debug(SUBHEADER_PROCESS_FUNCTION_NAME, subheaderIndex);
subheaderIndexToClass.get(subheaderIndex).processSubheader(
subheaderPointers.get(subheaderPointerIndex).offset,
subheaderPointers.get(subheaderPointerIndex).length);
} else {
currentPageDataSubheaderPointers.add(subheaderPointers.get(subheaderPointerIndex));
}
} else {
LOGGER.debug(UNKNOWN_SUBHEADER_SIGNATURE);
}
}
} catch (Exception e) {
LOGGER.warn("Encountered broken page metadata. Skipping subheader.");
}
}
}