@@ -90,7 +90,7 @@ export function guessStringTableEntryLength(table: StringTable, entries: StringT
90
90
1 + // new index bit
91
91
1 + // misc boolean
92
92
1 + // substring bit
93
- entry . text . length + 1 + // +1 for null termination
93
+ ( entry . text ? entry . text . length + 1 : 1 ) + // +1 for null termination
94
94
( entry . extraData ? Math . ceil ( entry . extraData . length / 8 ) : 0 ) ;
95
95
} , 1 ) ;
96
96
}
@@ -108,18 +108,21 @@ export function encodeStringTableEntries(stream: BitStream, table: StringTable,
108
108
stream . writeBoolean ( true ) ;
109
109
}
110
110
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 ) ;
115
115
116
- stream . writeASCIIString ( entry . text ) ;
116
+ stream . writeASCIIString ( entry . text ) ;
117
+ } else {
118
+ stream . writeBoolean ( false ) ;
119
+ }
117
120
118
121
if ( entry . extraData ) {
119
122
stream . writeBoolean ( true ) ;
120
123
121
124
entry . extraData . index = 0 ;
122
- if ( table . fixedUserDataSizeBits ) {
125
+ if ( table . fixedUserDataSize && table . fixedUserDataSizeBits ) {
123
126
stream . writeBitStream ( entry . extraData , table . fixedUserDataSizeBits ) ;
124
127
} else {
125
128
const byteLength = Math . ceil ( entry . extraData . length / 8 ) ;
0 commit comments