◀ANSI版開発トップへ
  • 3381 マイナーなバグ修正
    • 3383 RE: マイナーなバグ修正
      • 3384 Re:マイナーなバグ修正
  • [3381] マイナーなバグ修正 もか 2004年01月28日 00:57

    相変わらず、マイナーなバグのパッチを出します。
    http://www.egroups.co.jp/files/sakura-editor/Developer/Source/
    diff_040125fixs.zip

    ・再変換構造体を埋めるときのヌル終端が変
    ATOK on Win95/NT4での再変換が出来ない原因かもしれない(未確認)
    ・ファイル読み込み中などにウィンドウを閉じると、デスクトップに線が作画される
    ・CDocLineMgrのメモリーリーク
    ・外部コマンド実行の標準出力を取得するとき、CRとLFが分割されることがある
    なお、CProfileは無関係の個所です。
    • [3383] RE: マイナーなバグ修正 げんた 2004年01月28日 03:03

      >・CDocLineMgrのメモリーリーク
      よく見つけましたね.日付が10月になってますが.^^;

      >・外部コマンド実行の標準出力を取得するとき、CRとLFが分割されることがある
      末尾が\r\nのときに逆に分割されてしまうような気がしますが.改行コードは単純に1バイトなのでその直前の
      for( j=0; j<(int)read_cnt/*-1*/; j++ ) {
      if( IsKanji1(work[j]) ) {
      j++;
      }
      }
      を抜けたときはj==read_cntですよね.
      • [3384] Re:マイナーなバグ修正 もか 2004年01月28日 15:23

        ▼ げんたさん
        > 日付が10月になってますが.^^;
        Unicode版のために書き換えていたとき発見しました。
        他の変更に埋もれてしまってたのを今ごろ発掘。
        > 末尾が\r\nのときに逆に分割されてしまうような気がしますが.
        をを、鋭い。両方考慮しないとだめってことですね。
        for( j=0; j<(int)read_cnt - 1; j++ ) {
        if( IsKanji1(work[j]) ) {
        j++;
        }if( work[j] == '\r' && work[j+1] == '\n' ) {
        j++;
        } else if( work[j] == '\n' && work[j+1] == '\r' ) {
        j++;
        }
        }
        if( j == read_cnt - 1 ){
        if( IsKanji1(work[j]) ) {
        j = read_cnt + 1; // ぴったり出力できないことを主張
        }else if( work[j] == '\r' || work[j] == '\n' ) {
        // CRLF,LFCRの一部ではない改行が末尾にある
        // 次の読み込みで、CRLF,LFCRの一部になる可能性がある
        j = read_cnt + 1;
        }else{
        j = read_cnt;
        }
        }
        if( j == (int)read_cnt ){ // ぴったり出力できる場合