[NLS2TXT] Add missed check for default char

[TXT2NLS] Size of glyph table in words (create_nls uses wrong size)

svn path=/trunk/; revision=72704
This commit is contained in:
Dmitry Chapyshev 2016-09-17 14:04:32 +00:00
parent fc49388a2a
commit ea13a8e917
4 changed files with 18 additions and 15 deletions

View file

@ -172,15 +172,18 @@ BestFit_FromNLS(const WCHAR *pszNLSFile, const WCHAR *pszBestFitFile)
for (CodePageChar = 0; CodePageChar <= 0xFF; CodePageChar++) for (CodePageChar = 0; CodePageChar <= 0xFF; CodePageChar++)
{ {
WCHAR szCharName[MAX_STR_LEN] = { 0 }; if (CodePageChar != CodePageTable.UniDefaultChar)
{
WCHAR szCharName[MAX_STR_LEN] = { 0 };
GetUName(GlyphTable[CodePageChar], szCharName); GetUName(GlyphTable[CodePageChar], szCharName);
BestFit_Write(hFile, BestFit_Write(hFile,
L"0x%02X 0x%04X ;%s\r\n", L"0x%02X 0x%04X ;%s\r\n",
CodePageChar, CodePageChar,
GlyphTable[CodePageChar], GlyphTable[CodePageChar],
szCharName); szCharName);
}
} }
BestFit_Write(hFile, L"\r\n"); BestFit_Write(hFile, L"\r\n");

View file

@ -62,7 +62,7 @@ NLS_ReadFile(const WCHAR *pszFile, PCPTABLEINFO CodePageTable)
hFile = CreateFile(pszFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); hFile = CreateFile(pszFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE) if (hFile != INVALID_HANDLE_VALUE)
{ {
PUSHORT pData = NULL; PUSHORT pData;
DWORD dwRead; DWORD dwRead;
DWORD dwFileSize; DWORD dwFileSize;

View file

@ -178,7 +178,7 @@ nls_from_txt(const char *txt_file_path, const char *nls_file_path)
} }
/* OEM glyph table size in words */ /* OEM glyph table size in words */
size = (glyph_table ? (256 * sizeof(uint16_t)) : 0); size = (glyph_table ? 256 : 0);
if (fwrite(&size, 1, sizeof(size), file) != sizeof(size)) if (fwrite(&size, 1, sizeof(size), file) != sizeof(size))
{ {

View file

@ -140,7 +140,7 @@ txt_get_mb_table(const char *file_path, uint16_t uni_default_char)
int res = 0; int res = 0;
FILE *file; FILE *file;
table = malloc(0xFF * sizeof(uint16_t)); table = malloc(256 * sizeof(uint16_t));
if (!table) if (!table)
{ {
printf("Memory allocation failure\n"); printf("Memory allocation failure\n");
@ -148,7 +148,7 @@ txt_get_mb_table(const char *file_path, uint16_t uni_default_char)
} }
/* Set default value for all table items */ /* Set default value for all table items */
for (index = 0; index <= 0xFF; index++) for (index = 0; index <= 255; index++)
table[index] = uni_default_char; table[index] = uni_default_char;
file = fopen(file_path, "r"); file = fopen(file_path, "r");
@ -254,7 +254,7 @@ txt_get_wc_table(const char *file_path, uint16_t default_char, int is_dbcs)
int found; int found;
FILE *file; FILE *file;
table = malloc(0xFFFF * (is_dbcs ? sizeof(uint16_t) : sizeof(uint8_t))); table = malloc(65536 * (is_dbcs ? sizeof(uint16_t) : sizeof(uint8_t)));
if (!table) if (!table)
{ {
printf("Memory allocation failure\n"); printf("Memory allocation failure\n");
@ -262,7 +262,7 @@ txt_get_wc_table(const char *file_path, uint16_t default_char, int is_dbcs)
} }
/* Set default value for all table items */ /* Set default value for all table items */
for (index = 0; index <= 0xFFFF; index++) for (index = 0; index <= 65535; index++)
{ {
/* DBCS code page */ /* DBCS code page */
if (is_dbcs) if (is_dbcs)
@ -393,7 +393,7 @@ txt_get_glyph_table(const char *file_path, uint16_t uni_default_char)
int res = 0; int res = 0;
FILE *file; FILE *file;
table = malloc(0xFF * sizeof(uint16_t)); table = malloc(256 * sizeof(uint16_t));
if (!table) if (!table)
{ {
printf("Memory allocation failure\n"); printf("Memory allocation failure\n");
@ -401,7 +401,7 @@ txt_get_glyph_table(const char *file_path, uint16_t uni_default_char)
} }
/* Set default value for all table items */ /* Set default value for all table items */
for (index = 0; index <= 0xFF; index++) for (index = 0; index <= 255; index++)
table[index] = uni_default_char; table[index] = uni_default_char;
file = fopen(file_path, "r"); file = fopen(file_path, "r");