[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:4651] mw32-registry-list-keys に不正な引数を指定するとエラー
- X-ml-count: 4651
- Subject: [MD:4651] mw32-registry-list-keys に不正な引数を指定するとエラー
- From: "M.Fujii" <boochang@xxxxxxxxxxxx>
- Date: Wed, 08 Oct 2003 20:47:23 +0900 (JST)
- X-mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
藤井です。
registry API で以下の不具合が発生します。
(1) (mw32-registry-list-keys "HOGE") を評価すると返り値が不定。
(2) (mw32-registry-list-keys nil) を評価すると Meadow が落ちる。
(1) については、registry_key_setup() がエラーを返す(キーのルート部分に
存在しないものが指定されている)ときに、Fmw32_registry_list_keys が初期
化されていない Lisp_Object の変数を返すのが原因のようです。
(2) については、Fmw32_registry_list_keys で引数のチェックなしに
MW32_ENCODE_TEXT() を呼び出しているのが原因ではないでしょうか?
# mw32-registry-list-values についても同様です。
以下のようにコードを修正したら直りました。
# どういうエラーメッセージが適切か分からないのでエラーメッセージは適当です。
--- src/mw32reg.c.orig 2003-06-18 03:18:03.000000000 +0900
+++ src/mw32reg.c 2003-10-08 20:19:11.250000000 +0900
@@ -792,9 +792,12 @@
LPSTR errmsg = NULL;
long err;
+ CHECK_STRING (key, 0);
+
MW32_ENCODE_TEXT (key, Vw32_system_coding_system, &key_data, &key_len);
if (!registry_key_setup(®key, key_data, NULL))
{
+ errmsg = "Cannot open KEY, %s";
goto quit;
}
@@ -848,9 +851,12 @@
long err;
Lisp_Object result;
+ CHECK_STRING (key, 0);
+
MW32_ENCODE_TEXT (key, Vw32_system_coding_system, &key_data, &key_len);
if (!registry_key_setup(®key, key_data, NULL))
{
+ errmsg = "Cannot open KEY, %s";
goto quit;
}
--
藤井 正行 / Masayuki FUJII ( boochang@xxxxxxxxxxxx )