[NLS2TXT] Add missed check for default char
authorDmitry Chapyshev <dmitry@reactos.org>
Sat, 17 Sep 2016 14:04:32 +0000 (14:04 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Sat, 17 Sep 2016 14:04:32 +0000 (14:04 +0000)
[TXT2NLS] Size of glyph table in words (create_nls uses wrong size)

svn path=/trunk/; revision=72704

rosapps/applications/devutils/nls2txt/bestfit.c
rosapps/applications/devutils/nls2txt/nls.c
rosapps/applications/devutils/txt2nls/nls.c
rosapps/applications/devutils/txt2nls/txt.c

index 24cd2cf..c1419d6 100644 (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");
index 55eda81..2bb2702 100644 (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;
 
index d2b75d0..6067736 100644 (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))
     {
index d3c1a29..56acb04 100644 (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");