(s: State)
| 185 | return 0; |
| 186 | } |
| 187 | function decodeMetaBlockLength(s: State): number { |
| 188 | if (s.bitOffset >= 16) { |
| 189 | s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); |
| 190 | s.bitOffset -= 16; |
| 191 | } |
| 192 | s.inputEnd = readFewBits(s, 1); |
| 193 | s.metaBlockLength = 0; |
| 194 | s.isUncompressed = 0; |
| 195 | s.isMetadata = 0; |
| 196 | if ((s.inputEnd !== 0) && readFewBits(s, 1) !== 0) { |
| 197 | return 0; |
| 198 | } |
| 199 | const sizeNibbles: number = readFewBits(s, 2) + 4; |
| 200 | if (sizeNibbles === 7) { |
| 201 | s.isMetadata = 1; |
| 202 | if (readFewBits(s, 1) !== 0) { |
| 203 | return makeError(s, -6); |
| 204 | } |
| 205 | const sizeBytes: number = readFewBits(s, 2); |
| 206 | if (sizeBytes === 0) { |
| 207 | return 0; |
| 208 | } |
| 209 | for (let i = 0; i < sizeBytes; ++i) { |
| 210 | if (s.bitOffset >= 16) { |
| 211 | s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); |
| 212 | s.bitOffset -= 16; |
| 213 | } |
| 214 | const bits: number = readFewBits(s, 8); |
| 215 | if (bits === 0 && i + 1 === sizeBytes && sizeBytes > 1) { |
| 216 | return makeError(s, -8); |
| 217 | } |
| 218 | s.metaBlockLength += bits << (i * 8); |
| 219 | } |
| 220 | } else { |
| 221 | for (let i = 0; i < sizeNibbles; ++i) { |
| 222 | if (s.bitOffset >= 16) { |
| 223 | s.accumulator32 = (s.shortBuffer[s.halfOffset++] << 16) | (s.accumulator32 >>> 16); |
| 224 | s.bitOffset -= 16; |
| 225 | } |
| 226 | const bits: number = readFewBits(s, 4); |
| 227 | if (bits === 0 && i + 1 === sizeNibbles && sizeNibbles > 4) { |
| 228 | return makeError(s, -8); |
| 229 | } |
| 230 | s.metaBlockLength += bits << (i * 4); |
| 231 | } |
| 232 | } |
| 233 | s.metaBlockLength++; |
| 234 | if (s.inputEnd === 0) { |
| 235 | s.isUncompressed = readFewBits(s, 1); |
| 236 | } |
| 237 | return 0; |
| 238 | } |
| 239 | function readSymbol(tableGroup: Int32Array, tableIdx: number, s: State): number { |
| 240 | let offset: number = tableGroup[tableIdx]; |
| 241 | const v: number = s.accumulator32 >>> s.bitOffset; |
no test coverage detected
searching dependent graphs…