Index: src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
--- src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java	(revision f41756f8024930384a60c5c57eb9eb2913ce1ae0)
+++ src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java	(date 1594215482522)
@@ -935,9 +935,9 @@
         final long numFiles = readUint64(header);
         assertFitsIntoInt("numFiles", numFiles);
         final SevenZArchiveEntry[] files = new SevenZArchiveEntry[(int)numFiles];
-        for (int i = 0; i < files.length; i++) {
+        /*for (int i = 0; i < files.length; i++) {
             files[i] = new SevenZArchiveEntry();
-        }
+        }*/
         BitSet isEmptyStream = null;
         BitSet isEmptyFile = null;
         BitSet isAnti = null;
@@ -981,8 +981,13 @@
                     int nextName = 0;
                     for (int i = 0; i < names.length; i += 2) {
                         if (names[i] == 0 && names[i+1] == 0) {
-                            files[nextFile++].setName(new String(names, nextName, i-nextName, StandardCharsets.UTF_16LE));
+                            String fName = new String(names, nextName, i - nextName, StandardCharsets.UTF_16LE);
+                            if (files[nextFile] == null) {
+                                files[nextFile] = new SevenZArchiveEntry();
+                            }
+                            files[nextFile].setName(fName);
                             nextName = i + 2;
+                            nextFile++;
                         }
                     }
                     if (nextName != names.length || nextFile != files.length) {
@@ -997,6 +1002,9 @@
                         throw new IOException("Unimplemented");
                     }
                     for (int i = 0; i < files.length; i++) {
+                        if (files[i] == null) {
+                            files[i] = new SevenZArchiveEntry();
+                        }
                         files[i].setHasCreationDate(timesDefined.get(i));
                         if (files[i].getHasCreationDate()) {
                             files[i].setCreationDate(header.getLong());
@@ -1011,6 +1019,9 @@
                         throw new IOException("Unimplemented");
                     }
                     for (int i = 0; i < files.length; i++) {
+                        if (files[i] == null) {
+                            files[i] = new SevenZArchiveEntry();
+                        }
                         files[i].setHasAccessDate(timesDefined.get(i));
                         if (files[i].getHasAccessDate()) {
                             files[i].setAccessDate(header.getLong());
@@ -1025,6 +1036,9 @@
                         throw new IOException("Unimplemented");
                     }
                     for (int i = 0; i < files.length; i++) {
+                        if (files[i] == null) {
+                            files[i] = new SevenZArchiveEntry();
+                        }
                         files[i].setHasLastModifiedDate(timesDefined.get(i));
                         if (files[i].getHasLastModifiedDate()) {
                             files[i].setLastModifiedDate(header.getLong());
@@ -1039,6 +1053,9 @@
                         throw new IOException("Unimplemented");
                     }
                     for (int i = 0; i < files.length; i++) {
+                        if (files[i] == null) {
+                            files[i] = new SevenZArchiveEntry();
+                        }
                         files[i].setHasWindowsAttributes(attributesDefined.get(i));
                         if (files[i].getHasWindowsAttributes()) {
                             files[i].setWindowsAttributes(header.getInt());
@@ -1071,6 +1088,9 @@
         int nonEmptyFileCounter = 0;
         int emptyFileCounter = 0;
         for (int i = 0; i < files.length; i++) {
+            if (files[i] == null) {
+                continue;
+            }
             files[i].setHasStream(isEmptyStream == null || !isEmptyStream.get(i));
             if (files[i].hasStream()) {
                 if (archive.subStreamsInfo == null) {
