Skip to content
This repository was archived by the owner on Jul 2, 2024. It is now read-only.

Commit 5b2665b

Browse files
committed
handle empty strings in string tables
1 parent 6462480 commit 5b2665b

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/Parser/StringTableParser.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export function guessStringTableEntryLength(table: StringTable, entries: StringT
9090
1 + // new index bit
9191
1 + // misc boolean
9292
1 + // substring bit
93-
entry.text.length + 1 + // +1 for null termination
93+
(entry.text ? entry.text.length + 1 : 1) + // +1 for null termination
9494
(entry.extraData ? Math.ceil(entry.extraData.length / 8) : 0);
9595
}, 1);
9696
}
@@ -108,18 +108,21 @@ export function encodeStringTableEntries(stream: BitStream, table: StringTable,
108108
stream.writeBoolean(true);
109109
}
110110

111-
// we always encode a value
112-
stream.writeBoolean(true);
113-
// we don't encode substring optimizations
114-
stream.writeBoolean(false);
111+
if (typeof entry.text !== 'undefined') {
112+
stream.writeBoolean(true);
113+
// we don't encode substring optimizations
114+
stream.writeBoolean(false);
115115

116-
stream.writeASCIIString(entry.text);
116+
stream.writeASCIIString(entry.text);
117+
} else {
118+
stream.writeBoolean(false);
119+
}
117120

118121
if (entry.extraData) {
119122
stream.writeBoolean(true);
120123

121124
entry.extraData.index = 0;
122-
if (table.fixedUserDataSizeBits) {
125+
if (table.fixedUserDataSize && table.fixedUserDataSizeBits) {
123126
stream.writeBitStream(entry.extraData, table.fixedUserDataSizeBits);
124127
} else {
125128
const byteLength = Math.ceil(entry.extraData.length / 8);

0 commit comments

Comments
 (0)