• R/O
  • SSH
  • HTTPS

ttssh2: 提交


Commit MetaInfo

修订版10148 (tree)
时间2022-08-13 23:01:09
作者zmatsuo

Log Message

スペシャルフォントのパス長の上限をなくした

更改概述

差异

--- trunk/teraterm/teraterm/teraterm.cpp (revision 10147)
+++ trunk/teraterm/teraterm/teraterm.cpp (revision 10148)
@@ -53,6 +53,8 @@
5353 #include "teraterml.h"
5454 #include "sendmem.h"
5555 #include "ttdebug.h"
56+#include "win32helper.h"
57+#include "asprintf.h"
5658
5759 #if defined(_DEBUG) && defined(_MSC_VER)
5860 #define new ::new(_NORMAL_BLOCK, __FILE__, __LINE__)
@@ -59,23 +61,25 @@
5961 #endif
6062
6163 static BOOL AddFontFlag;
62-static wchar_t TSpecialFont[MAX_PATH];
64+static wchar_t *TSpecialFont;
6365 static CVTWindow* pVTWin;
6466 static DWORD HtmlHelpCookie;
6567
6668 static void LoadSpecialFont(void)
6769 {
70+ wchar_t *mod_path;
6871 if (IsExistFontW(L"Tera Special", SYMBOL_CHARSET, TRUE)) {
6972 // すでに存在するのでロードしない
7073 return;
7174 }
7275
73- if (GetModuleFileNameW(NULL, TSpecialFont, _countof(TSpecialFont)) == 0) {
76+ if (hGetModuleFileNameW(NULL, &mod_path) != 0) {
7477 AddFontFlag = FALSE;
7578 return;
7679 }
77- *wcsrchr(TSpecialFont, L'\\') = 0;
78- wcscat_s(TSpecialFont, L"\\TSPECIAL1.TTF");
80+ *wcsrchr(mod_path, L'\\') = 0;
81+ aswprintf(&TSpecialFont, L"%s\\TSPECIAL1.TTF", mod_path);
82+ free(mod_path);
7983
8084 // teraterm.exeのみで有効なフォントとなる。
8185 // removeしなくても終了するとOSからなくなる
@@ -368,6 +372,8 @@
368372 _HtmlHelpW(NULL, NULL, HH_CLOSE_ALL, 0);
369373 _HtmlHelpW(NULL, NULL, HH_UNINITIALIZE, HtmlHelpCookie);
370374
375+ free(TSpecialFont);
376+ TSpecialFont = NULL;
371377 UnloadSpecialFont();
372378 DLLExit();
373379
Show on old repository browser