|
秀丸担当さん今日は、ひろです。
標題に偽りありの可能性があるのですが、strstr, leftstr 等の関数を用
いた場合、
HIDEMARU のページ違反です。
モジュール : KERNEL32.DLL、アドレス : 015f:bff7a115
Registers:
EAX=021100c4 CS=015f EIP=bff7a115 EFLGS=00010212
EBX=0213efbc SS=0167 ESP=006defe0 EBP=006df020
ECX=00100000 DS=0167 ESI=021100c4 FS=32b7
EDX=02240010 ES=0167 EDI=0002eef8 GS=32be
Bytes at CS:EIP:
8b 03 a8 01 74 25 25 fc ff ff 0f 8b 53 08 03 f8
Stack dump:
006df020 0002eef8 00002008 0210e0bc bff7a391 004c0000 021100c4
0002eef8 00000000 004c000c 004c0000 0210e0bc 00000000 00000000
0000213e 0000210f
となり落ちる事があるようです。
実際に操作している文字列 $str は、自作の DLL 関数で返す値なので、私
に不備がある可能性が非常に高いのですが、message 文 1 step ずつ確認し
た限り、秀丸の文字列関数で落ちている気がします。
またコンパイラに mingw を使っている所為か、デバッガがブレイクポイン
トを認識してくれないので、文字列を返す直前にファイルに書き込む処理を
加え、秀丸が落ちた後に、ファイルの内容をバイナリエディタで確認したの
ですが、テキストデータ以外は返していないようです。
こういった場合、どういった手順で原因究明・御報告をすれば宜しいのでしょ
うか?
最後に一つ質問があります。秀丸の内部コードでは改行は全て、\x0A で扱っ
ていたと思うのですが、マクロも同様だと思います。この場合 dllfuncstr
の返り値として、改行コードが \x0D\x0A となっていた場合、\x0D-
\x0D\x0A への変換はされるのでしょうか? もしされないなら (マクロの)
strlen, strstr, leftstr 等はどういった動きをするのでしょうか? それと
もそもそも文字列を返す前に、DLL 関数で変換をする必要があるのでしょう
か? 引数として渡す場合は変換しないことは確認したのですが...。
|
|