FileBuffer = (UINT8 *) malloc (InputLength);\r
if (FileBuffer == NULL) {\r
Error (NULL, 0, 4001, "Resource:", "Memory cannot be allocated!");\r
- return 1;\r
+ goto ERROR;\r
}\r
\r
Status = GetFileContents (\r
}\r
\r
if (EFI_ERROR(Status)) {\r
- free(FileBuffer);\r
- return 1;\r
+ Error (NULL, 0, 0004, "Error getting contents of file: %s", InputFileName);\r
+ goto ERROR;\r
}\r
\r
if (OutputFileName == NULL) {\r
UINT16 Start[18];\r
UINT16 *Pointer;\r
UINT16 Index3;\r
- volatile UINT16 Index;\r
+ UINT16 Index;\r
UINT16 Len;\r
UINT16 Char;\r
UINT16 JuBits;\r
UINT16 WordOfStart;\r
UINT16 WordOfCount;\r
\r
- for (Index = 1; Index <= 16; Index++) {\r
+ for (Index = 0; Index <= 16; Index++) {\r
Count[Index] = 0;\r
}\r
\r
Count[BitLen[Index]]++;\r
}\r
\r
+ Start[0] = 0;\r
Start[1] = 0;\r
\r
for (Index = 1; Index <= 16; Index++) {\r
\r
JuBits = (UINT16) (16 - TableBits);\r
\r
+ Weight[0] = 0;\r
for (Index = 1; Index <= TableBits; Index++) {\r
Start[Index] >>= JuBits;\r
Weight[Index] = (UINT16) (1U << (TableBits - Index));\r
for (Char = 0; Char < NumOfChar; Char++) {\r
\r
Len = BitLen[Char];\r
- if (Len == 0) {\r
+ if (Len == 0 || Len >= 17) {\r
continue;\r
}\r
\r
volatile UINT16 Index;\r
UINT32 Mask;\r
\r
+ assert (nn <= NPT);\r
+\r
Number = (UINT16) GetBits (Sd, nbit);\r
\r
if (Number == 0) {\r