スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« OS X版の不具合修正 | トップページ | 公開は明日に順延 »

OS X版の修正を完了

昨日書いた様に、OS X用Mirror-DTCの現行版(Ver1.3.0)のクライアントには色々と不具合があったのだが、認識していた不具合は修正できた。サーバーについては、殆ど修正の必要は無かったのだが、昨日書いたクリップボードの問題はクライアントと共通だったので修正した。

まず、昨日書いたクリップボードを操作しているとクラッシュする場合があった不具合の原因は、デバッグモードでプロクラムを動作させつつ、クリップボードを操作していると現象が再現し、問題がある箇所がXcodeで表示されたので、容易に特定できた。

問題は何処にあったのか、というと、OS X版Mirror-DTCのクリップボード転送では、転送先がWindows上のサーバーだった場合、改行コードを変更しているのだが、そのために用意していた関数に問題があった。

更に詳細に書くと、その関数の戻り値はテキストサイズで、同時に変更完了後のテキストを受け取る為に、データバッファのポインタ、つまり、char **buf を渡しているのだが、その関数の最後で、テキストに\0を入れるコードがbuf[outbytelen-2] = 0 みたいになっていた訳だ。

つまり、本来なら、(*buf)[]に書き込みを行う必要があったのだが、buf[]に書き込みを行っていたので、メモリを破壊する格好になっていた訳だ。

当然の事ながら、送信データの末尾には\0が挿入されていないので、送信されたクリップボードテキストが異常になる場合もありえたのだが、通常、メモリ上のデータは0で埋められている事が多いので、転送データ自体には、問題が発生しないケースが多かった筈だ。

また、bufは、クリップボード監視用スレッドのスタック上にある変数だったので、本来書き込むべきではないメモリ領域に0を書き込む格好になっていたのだが、メイン処理には普通は影響は出ず、テキストサイズが大きかった場合等、書き込むアドレスにメモリが割り当てられていなかった場合に、例外が発生する格好になっていた。

なので、デバッグモードで動作させていると、異常メモリへの書き込みとして報告されたので、バグを即座に認識できた訳だ。

と、いう事で、昨日書いていた未解決の問題も解決できたのだが、もう一つ書いていたマウスホイールでのスクロールの問題は、OS Xでは、イベント通知されるホイールの移動量がWindowsの場合よりも小さく、何回か回転させないと、Mirror-DTCが一回分の移動量として規定している回転量に達しなかったので、クライアントがサーバーにホイール回転情報を送信していなかったのが問題だった。

なので、回転速度をある程度速くしないと、スクロールされなかったのだが、回転情報の扱いは、サーバー側も、OS XとWindowsで異なるので、Windowsでは、比較的スクロールし易く、OS Xではスクロールしにくい、という格好になっていた。

しかしまあ、Mirror-DTCの場合、OS XサーバーをWindowsクライアントから操作する場合もある訳なので、サーバー側については変更はせず、クライアント側に、Windowsみなしの回転が行われた様にみせかける変更を入れた。

その結果、OS X版Mirror-DTCクライアントからのマウスホイール回転でのスクロール量は、次バージョンでは少し変わった。

しかし、少なくとも、Windows版サーバーに接続する場合には、Windows上のマウスホイールを回転させた場合に近い操作が行える様になった筈だし、OS Xサーバーに接続する場合にも、現行版よりは操作しやすくなった筈だ。

と、いう事で、作者が認識していた不具合の修正は全て完了し、既に、配布パッケージも作成してあるのだが、明日一日くらいは、新しいバイナリを使い込んでみる予定だ。

それで問題が出なければ、OS X版Mirror-DTC Ver1.3.0.1は、明日の夜くらいに、作者のダウンロードサイトにアップする事になる筈だ。

= この記事に関連する公開中ソフト =

Mirror-DTC

Mirror-DTC

(2016/10/25追記)

« OS X版の不具合修正 | トップページ | 公開は明日に順延 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63866116

この記事へのトラックバック一覧です: OS X版の修正を完了:

« OS X版の不具合修正 | トップページ | 公開は明日に順延 »

2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google