返信しようとするとエラーになるNo.04781
マイケル さん 01/04/22 21:55
 
マイケルです。
特定のメールに返信しようとすると「不正な処理をしました…」の
メッセージが出ます。[詳細]は下記の通りです。

TURUKAME のページ違反です。
モジュール : KERNEL32.DLL、アドレス : 017f:bff7a388
Registers:
EAX=01c26f10 CS=017f EIP=bff7a388 EFLGS=00010206
EBX=000028c0 SS=0187 ESP=0201fbd0 EBP=0201fbf4
ECX=c6824181 DS=0187 ESI=01c28f18 FS=1baf
EDX=d2456b20 ES=0187 EDI=09828ec0 GS=497e
Bytes at CS:EIP:
89 41 08 8b 56 04 8b 46 08 89 50 04 8d 04 1e 50
Stack dump:
09828ec0 00000000 004b000c 004b0000 01c28f18 00000000 00000000
0000b454 00001c29 0201fc1c bff7a550 004b0000 01c28f18 000028c0
00000003 00000003

そのフォルダにあるメールを含め、他のメールに返信しても問題あ
りません。
なお、該当のメールは、時々引用符が妙なところに入ったり、とか
してます。
しかし、パソコン通信時代からメールを扱ってらっしゃる方からの
メールなので、あちらのメール作成時のミスではなさそうです。

メールは単なる雑談メールなので、ヘッダーも含めて秀まるおさんに
そっくりお送りしても構いません。お送りするとしたらどっちの方法
がいいでしょう?

1. そのまんま転送する
2. 受信ログを送る


============================================
system info
============================================
        OS: Windows98
   version: 4.10.2222
service pack: A
         IE: 5.50.4522.1800; SP1, q290108
--------------------------------------------
 processor: MobileCeleron(model6)
clock freq: 398.2MHz
--------------------------------------------
main memory: 195,460KB(190MB)

drives:
 A: Removable Disk
 C: FAT-HD (Free:0.14GB/Total:2.00GB)
 D: FAT32-HD (Free:2.16GB/Total:7.35GB)
 Z: CD-ROM Drive
--------------------------------------------


---
Miguel Thomas Lopez-Cai
TuruKame Ver.1.09

[ ]
RE:04781 返信しようとするとエラーになるNo.04782
マイケル さん 01/04/23 07:17
 
マイケルです。

自己レスです。私めの 昨夜  9時55分 の
“返信しようとするとエラーになる”について:
====

>マイケルです。
>特定のメールに返信しようとすると「不正な処理をしました…」の
>メッセージが出ます。[詳細]は下記の通りです。

なお、「マクロ登録」で「送信用エディタ起動時」に自作のマクロ
を登録してますが、マクロのどの部分が問題なのか判りません。


---
Miguel Thomas Lopez-Cai
TuruKame Ver.1.09

[ ]
RE:04782 返信しようとするとエラーになるNo.04783
マイケル さん 01/04/23 08:40
 
マイケルです。

自己レスです。私めの 今朝  7時17分 の
“RE 04781 返信しようとするとエラーになる”について:
====

ちびちびちびちび すみません。

>なお、「マクロ登録」で「送信用エディタ起動時」に自作のマクロ
>を登録してますが、マクロのどの部分が問題なのか判りません。

マクロの一部でサブルーチンで日本語メールかどうかの判定をやって
るんですが

----------
(省略)
  call IsJapanese;
  if ( !##return ) goto terminus;
(省略)

IsJapanese:
  ##Touten = 0;
  $$Lang = "";
  $$Charset = dllfuncstr("RootHeader","Content-Type:");
  $$Text = dllfuncstr("RootBody");

//  if ( $$Charset == "" && (strstr($$Text, "。") > 0 || strstr($$Text, ".
") > 0) )
//    #Touten = 1;

  $$Charset = dllfuncstr("ToLower", $$Charset );  // both upper and lower cases
  if ( strstr($$Charset, "multipart") >= 0 )    // struggle against html-mails
  {
    $$Charset = dllfuncstr("RootHeader","X-Body-Content-Type:");
    $$Charset = dllfuncstr("ToLower", $$Charset );
  }

  message $$Charset;

  if ( (strstr($$Charset, "jp") < 0 && strstr($$Charset, "jis") < 0) && #Tou
ten == 0 )
    $$Lang ="NotJP";
  if ( $$Lang == "NotJP" )
  {
    (英文テンプレート作成)
    return false;
  }

return true;

----------

上のように

  if ( $$Charset == "" && (strstr($$Text, "。") > 0 || strstr($$Text, ".")
> 0) )
    #Touten = 1;

の部分をコメント・アウトするとエラーになりません。
コメント・アウトしない場合、message の部分は無事に通過し、この
サブルーチンからリターンしたあとにエラーになるらしいです。


---
Miguel Thomas Lopez-Cai
TuruKame Ver.1.09

[ ]
RE:04783 返信しようとするとエラーになるNo.04802
秀まるお さん 01/04/23 12:06
 
 そこまで調べていただいて恐縮ですが、死んでる場所がkernel32.dllなので、エ
ラーログではいまいち分からないです。

 ソースコードを見直してみましたが、strstrの処理もおかしくなさそうです。

 ってことで、すみませんがその「返信で死ぬメール」を添付ファイルか何かで送っ
てください。

    maruo@mitene.or.jp

 が宛先です。

[ ]
RE:04783 返信しようとするとエラーになるNo.04811
秀まるお さん 01/04/23 14:22
 
 まいどご協力どうもです。送っていただいたメールでテストしたら再現して、バグ
の原因も分かりました。

 dllfuncstrが返す文字列がとても長い場合に、それをそのまま変数に入れようとし
てメモリを壊していました。秀丸の文字列変数の記憶できる長さは8キロバイトまで
なのでした。

 ということで、今のままだと長い本文のメールの場合に確実に死んでしまうようで
す。

 ってことで修正させていただきます。

[ ]
RE:04811 返信しようとするとエラーになるNo.04813
マイケル さん 01/04/23 15:54
 
マイケルです。

秀まるおさんの 本日 午後 2時22分 の
“RE 04783 返信しようとするとエラーになる”について:
====

> ということで、今のままだと長い本文のメールの場合に確実に死んでしまうようで
>す。
>
> ってことで修正させていただきます。

有り難とうございます。異様に長文の雑談メールだったってことが
原因だったんですね。これからはあまり長い雑談をしないように心
掛ます。(爆)

けど、なおって良かったです。

---
Miguel Thomas Lopez-Cai
TuruKame Ver.1.09

[ ]