[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++)
{
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,
L"0x%02X 0x%04X ;%s\r\n",
CodePageChar,
GlyphTable[CodePageChar],
szCharName);
BestFit_Write(hFile,
L"0x%02X 0x%04X ;%s\r\n",
CodePageChar,
GlyphTable[CodePageChar],
szCharName);
}
}
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);
if (hFile != INVALID_HANDLE_VALUE)
{
PUSHORT pData = NULL;
PUSHORT pData;
DWORD dwRead;
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 */
size = (glyph_table ? (256 * sizeof(uint16_t)) : 0);
size = (glyph_table ? 256 : 0);
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;
FILE *file;
table = malloc(0xFF * sizeof(uint16_t));
table = malloc(256 * sizeof(uint16_t));
if (!table)
{
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 */
for (index = 0; index <= 0xFF; index++)
for (index = 0; index <= 255; index++)
table[index] = uni_default_char;
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;
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)
{
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 */
for (index = 0; index <= 0xFFFF; index++)
for (index = 0; index <= 65535; index++)
{
/* DBCS code page */
if (is_dbcs)
@ -393,7 +393,7 @@ txt_get_glyph_table(const char *file_path, uint16_t uni_default_char)
int res = 0;
FILE *file;
table = malloc(0xFF * sizeof(uint16_t));
table = malloc(256 * sizeof(uint16_t));
if (!table)
{
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 */
for (index = 0; index <= 0xFF; index++)
for (index = 0; index <= 255; index++)
table[index] = uni_default_char;
file = fopen(file_path, "r");