MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / Unpack15

Method Unpack15

Libraries/unrar/unpack15.cpp:40–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38
39
40void Unpack::Unpack15(bool Solid)
41{
42 UnpInitData(Solid);
43 UnpInitData15(Solid);
44 UnpReadBuf();
45 if (!Solid)
46 {
47 InitHuff();
48 UnpPtr=0;
49 }
50 else
51 UnpPtr=WrPtr;
52 --DestUnpSize;
53 if (DestUnpSize>=0)
54 {
55 GetFlagsBuf();
56 FlagsCnt=8;
57 }
58
59 while (DestUnpSize>=0)
60 {
61 UnpPtr&=MaxWinMask;
62
63 if (Inp.InAddr>ReadTop-30 && !UnpReadBuf())
64 break;
65 if (((WrPtr-UnpPtr) & MaxWinMask)<270 && WrPtr!=UnpPtr)
66 UnpWriteBuf20();
67 if (StMode)
68 {
69 HuffDecode();
70 continue;
71 }
72
73 if (--FlagsCnt < 0)
74 {
75 GetFlagsBuf();
76 FlagsCnt=7;
77 }
78
79 if (FlagBuf & 0x80)
80 {
81 FlagBuf<<=1;
82 if (Nlzb > Nhfb)
83 LongLZ();
84 else
85 HuffDecode();
86 }
87 else
88 {
89 FlagBuf<<=1;
90 if (--FlagsCnt < 0)
91 {
92 GetFlagsBuf();
93 FlagsCnt=7;
94 }
95 if (FlagBuf & 0x80)
96 {
97 FlagBuf<<=1;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected