◀Unicode版開発トップへ
  • 551 Commit報告:(Imp) サロゲートペア対応
    • 553 Re:Commit報告:(Imp) サロゲートペア対応
    • 554 Re:Commit報告:(Imp) サロゲートペア対応
      • 555 Re2:Commit報告:(Imp) サロゲートペア対応
    • 587 Re:Commit報告:(Imp) サロゲートペア対応
  • [551] Commit報告:(Imp) サロゲートペア対応 Uchi 2008年07月06日 11:00

    リビジョン:
    rev1409

    変更種別:
    機能修正

    内容:
    サロゲートペア対応
    表示とカーソル移動に一応対応しました。
    • [553] Re:Commit報告:(Imp) サロゲートペア対応 ryoji 2008年07月06日 15:09

      > サロゲートペア対応
      > 表示とカーソル移動に一応対応しました。

      修正内容は確認していないですが、ちょっとだけ試してみました。
      Del や Back space での文字削除ができないみたいです。
    • [554] Re:Commit報告:(Imp) サロゲートペア対応 なすこじ 2008年07月08日 15:55

      ▼ Uchiさん
      Win2k,WinXPともにrev1409以降のリリース版で落ちる現象が発生しています。
      ビルド環境はVC2005 Express Editionです。

      下記のような操作で発生するのですが、必ず起こるわけでもないです。
      ・無題にテキストをドロップし、マウスにてスクロールバーを文書先頭へ移動する
      ・カーソルを表示エリア外にした後、設定ダイアログを開いてそのままOKする

      WinXPでは「メモリが"read"になることはできませんでした。」
      Win2kでは「エラーが発生したため、sakuraW.exeを終了します。プログラムをもう一度開始する必要があります。」

      落ちる時に上記のエラーを表示しますが、デバッグ版では発生しない事もあり原因が分かりません。
      ただ、rev1406以前では一度も発生しないので、rev1409の修正が絡んでいるのではないかと思います。

      タブモードが入でも2枚以上開けば発生しました。タブモードが切なら1つの画面で発生しました。

      ではでは。
      • [555] Re2:Commit報告:(Imp) サロゲートペア対応 ryoji 2008年07月08日 19:07

        ▼ なすこじさん
        > WinXPでは「メモリが"read"になることはできませんでした。」
        > Win2kでは「エラーが発生したため、sakuraW.exeを終了します。プログラムをもう一度開始する必要があります。」

        僕のところ(XP)では、いろいろいじっているうちに、何度か
        「sakuraW.exe の 0x004517c2 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00f89000 を読み込み中にアクセス違反が発生しました。」
        のようなエラーで落ちました。
        エラーアドレス0x004517c2は、ソースでは CTextDrawer.cpp(119) の場所でした。
        CTextDrawer::DispText()関数の中で、ExtTextOutW_AnyBuild()呼び出しの直前です。

        // サロゲートペア対策 2008/7/5 Uchi
        if (pDrawDxArray[nDrawLength] == 0) {
        004517C2 cmp dword ptr [ecx+edx*4],0
        004517C6 jne CTextDrawer::DispText+17Fh (4517C9h)
        nDrawLength++;
        004517C8 inc edx
        }

        //描画
        ::ExtTextOutW_AnyBuild(

        ※上記は混合モード(逆アセンブル)での表示
    • [587] Re:Commit報告:(Imp) サロゲートペア対応 kobake 2008年08月26日 23:37

      不正なメモリ位置を参照する箇所がありましたが、
      rev1411で問題が修正されていることを確認しました。

      サロゲートペアの実装アプローチにはとりあえずノーコメント。