Incidencia #48167

マクロ getpassword で Esc キーを押下したときの挙動がおかしい

Abrir Fecha: 2023-06-06 12:12 Última actualización: 2023-07-02 22:02

Informador:
Propietario:
Tipo:
Estado:
Cerrado
Componente:
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Fixed
Fichero:
Ninguno
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

Tera Term Ver.4.106 (SVN# 9298) を使用しています。
マクロの getpassword でダイアログが表示された場合の挙動に問題があるようです。

getpassword でダイアログが表示されたときに Esc キーでダイアログを閉じることができます。 このとき、第3引数で指定した変数の内容が変化しますが、内容が不定なようです。 画面で指定した文字列が入るわけではないようです。空白が1文字入る場合もありますし、文字化けしたような文字列が格納される場合もあります。 想像ですが、Esc キーでダイアログが閉じられてパスワード入力のコントロールが消滅した後に、ダイアログ内の文字列を取得しているのではないでしょうか。 そして、そのままパスワードファイルに書き込んでいるのではないでしょうか。

Esc キーでダイアログを閉じたときは、第3引数で指定した変数の内容は変更しないほうがよいと思います。パスワードファイルにも書き込まないほうが良いと思います。

以下、試した時のマクロ内容です。

  1. pwFile = 'C:\temp\password.dat'
  2. :retry
  3. delpassword pwFile 'test'
  4. password = ''
  5. getpassword pwFile 'test' password
  6. gpRes = result
  7. strcompare password 'end'
  8. if result = 0 end
  9. sprintf2 msg 'result = [%d]\npassword = [%s]' gpRes password
  10. strspecial msg
  11. messagebox msg 'TEST'
  12. goto retry

Ticket History (3/7 Histories)

2023-06-06 12:12 Updated by: imabeppu
  • New Ticket "マクロ getpassword で Esc キーを押下したときの挙動がおかしい" created
2023-06-06 14:16 Updated by: nmaya
  • Propietario Update from (Ninguno) to nmaya
  • Resolución Update from Ninguno to Accepted
  • Hito Update from (Ninguno) to Tera Term 4.107 & 5.0
2023-06-07 01:26 Updated by: nmaya
  • Resolución Update from Accepted to Fixed
Comentario

対応しました。

2023-06-26 10:45 Updated by: imabeppu
Comentario

修正内容を見ました。

コンパイルオプションまで確認していませんので、実際は問題ないかもしれませんが、気になる点がありました。 以下のようなことは起きないでしょうか。


※ttl_gui.cpp (リビジョン 10743 を確認)

  • 220行目で input_string を宣言。初期化を行っていないので内容は不定。
  • 222行目で OpenInpDlg() を呼び出し。第1引数に input_string を渡す。
  • パスワード入力ダイアログ Esc キーを押下した場合、CInpDlg::OnOK() は呼び出されないので input_string の内容は変更なし。不定のまま。
  • 223行目で内容が不定な input_stringWideCharToUTF8() で変換。
  • 224行目で「if (Temp2[0]!=0)」という判定を行っているが、内容が不定なので Esc キー押下時も条件が成り立つ可能性がある。

できれば、OpenInpDlg() の戻り値で Esc キーを押下したかどうかが判断できるようにし、その値をもとに処理を切り分けたほうがよいと思います。

変更を最小限にするのならば、220行目で input_string を宣言するときに、初期化しておくことでも解決すると思います。

  1. wchar_t input_string[MaxStrLen] = {};

以上、ご確認ください。

(Edited, 2023-06-27 12:45 Updated by: imabeppu)
2023-06-27 23:22 Updated by: nmaya
Comentario

ありがとうございます。対応してみました。

2023-06-28 10:32 Updated by: imabeppu
Comentario

対応ありがとうございます。次バージョンが楽しみです。

2023-07-02 22:02 Updated by: nmaya
  • Estado Update from Open to Cerrado

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Entrar