[ttssh2-commit] [10033] 起動時に0除算エラーが出る問題を修正した

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 6月 30日 (木) 02:56:44 JST


Revision: 10033
          https://osdn.net/projects/ttssh2/scm/svn/commits/10033
Author:   doda
Date:     2022-06-30 02:56:44 +0900 (Thu, 30 Jun 2022)
Log Message:
-----------
起動時に0除算エラーが出る問題を修正した

問題:
  r9980以降、起動時に0除算エラーが発生して起動しなくなる

原因:
  非表示状態のウィンドウを元に文字セルのサイズを計算しようとした結果
  サイズが正確に取れず0となり0除算を行っていた。

  r9980より前は、一度ホストに接続するまではcv.HWinが設定されていない為
  VTウィンドウの情報が取得できずに文字セルのサイズの計算を途中で諦めていた。

  r9980で起動時にcv.HWinが設定されるようになった。
  これにより、接続前でもサイズ変更が正しく行えるようになったが、同時に
  まだ非表示の段階で文字セルのサイズを計算しようとしてしまい、クライアント
  領域のサイズが正しく取れず文字セルの縦幅が0になってしまっていた。

対処:
  文字セルのサイズが0の時は計算を打ち切るようにした。
  これにより最初のメニュー初期化時には項目が正しく初期化されないが、
  実際にメニューを表示する時に再度計算が行われて正しい値でメニュー項目が
  設定される。

Modified Paths:
--------------
    trunk/TTXSamples/TTXResizeMenu/TTXResizeMenu.c

-------------- next part --------------
Modified: trunk/TTXSamples/TTXResizeMenu/TTXResizeMenu.c
===================================================================
--- trunk/TTXSamples/TTXResizeMenu/TTXResizeMenu.c	2022-06-28 15:11:16 UTC (rev 10032)
+++ trunk/TTXSamples/TTXResizeMenu/TTXResizeMenu.c	2022-06-29 17:56:44 UTC (rev 10033)
@@ -73,7 +73,9 @@
     margin_w = (rc_wnd.right - rc_wnd.left) - (rc_cl.right - rc_cl.left);
     cell_w = (rc_cl.right - rc_cl.left) / pvar->ts->TerminalWidth;
 
-    *width = (rc_dsk.right - rc_dsk.left - margin_w) / cell_w;
+    if (cell_w > 0) {
+      *width = (rc_dsk.right - rc_dsk.left - margin_w) / cell_w;
+    }
   }
   if (height) {
     int margin_h, cell_h;
@@ -81,7 +83,9 @@
     margin_h = (rc_wnd.bottom - rc_wnd.top) - (rc_cl.bottom - rc_cl.top);
     cell_h = (rc_cl.bottom - rc_cl.top) / pvar->ts->TerminalHeight;
 
-    *height = (rc_dsk.bottom - rc_dsk.top - margin_h) / cell_h;
+    if (cell_h > 0) {
+      *height = (rc_dsk.bottom - rc_dsk.top - margin_h) / cell_h;
+    }
   }
 
   return TRUE;


ttssh2-commit メーリングリストの案内
Back to archive index