This is a multi-part message in MIME format.

--Multipart_Sat__5_May_2001_23:36:30_+0900_081aa098
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

むとうです。

[ruby-ext:01678]で、Gdk::Colormap#colorsのパッチをお送りしたのですが、
coreを吐いて落ちるバグを見つけました。

具体的には以下のコードをDirectColor/TrueColor環境で実行すると再ます。

--
1: require 'gtk'
2:
3: colormap  dk::Colormap.get_system
4: #colormap  dk::Colormap.new(Gdk::Visual.get_best, true)
5:
6: for color in colormap.colors    #ここでこける
7:   printf("pixel  x, red  x, green  x, blue  x\n", 
8:           color.pixel, color.red, color.green, color.blue)
9: end
---

PseudoColor, GrayScaleの場合か、
または、3行目をコメントにして4行目を有効にすると動きます。

---
いろいろと追ってみたのですが、これはgdk_colormap_new()と
gdk_colormap_get_system()の実装の違いが原因でした。
#というかを理解していなかった私が悪いのかもしれませんが...。

gdk_colormap_new()では内部で仮にcolorsの配列を生成するのですが、
gdk_colormap_get_system()ではcolorsにNULLを設定しています。

なわけで、一応、coreを吐かないようにcolorsがNULLだったらnilを
返すようなパッチを添付します(patch1)。

でも、実際はGdk::Colormap#colorsが意味をなさない場合
(TrueColor/DirectColorの場合)は常にnilを返すようにしてしまった方が
良いかもしれません。

なわけで、一応、ように対応したパッチも添付(patch2)します。

私としてはpatch2の方が良いのですが、coreを回避するだけであればpatch1
でも問題ないと思います。
なわけで、後はよろしくお願いします(^^;)。>五鬚気

豫哺
パッチはぞれCVSのスに対して当ててあります。から、
インデントがおかしかったので部分も気靴泙靴拭

では。

----
○● むとう まさお(MUTOH Masao)    
●○ E-Mail:mutoh / highway.ne.jp


--Multipart_Sat__5_May_2001_23:36:30_+0900_081aa098
Content-Type: application/octet-stream;
 namebgdkcolor.c.patch1"
Content-Disposition: attachment;
 filenamebgdkcolor.c.patch1"
Content-Transfer-Encoding: base64

LS0tIHJiZ2RrY29sb3IuYy5vcmcJU2F0IE1heSAgNSAyMDowODo0NSAyMDAxCisrKyByYmdka2Nv
bG9yLmMJU2F0IE1heSAgNSAxMTozODoyOCAyMDAxCkBAIC02NSwxNSArNjUsMTYgQEAKICAgICBW
QUxVRSBzZWxmOwogewogICAgIEdka0NvbG9ybWFwICpjbWFwOwotCUdka0NvbG9yICpjb2xvcnM7
CisgICAgR2RrQ29sb3IgKmNvbG9yczsKICAgICBWQUxVRSBhcnkgPSByYl9hcnlfbmV3KCk7Cisg
ICAgVkFMVUUgZ2RrY29sb3I7CiAgICAgaW50IGk7CiAKLQljbWFwID0gZ2V0X2dka2NtYXAoc2Vs
Zik7Ci0JY29sb3JzID0gY21hcC0+Y29sb3JzOworICAgIGNtYXAgPSBnZXRfZ2RrY21hcChzZWxm
KTsKKyAgICBjb2xvcnMgPSBjbWFwLT5jb2xvcnM7CiAgICAgZm9yIChpID0gMDsgaSA8IGNtYXAt
PnNpemU7IGkrKykgewotCQlyYl9hcnlfcHVzaChhcnksIG1ha2VfZ2RrY29sb3IoY29sb3JzKSk7
Ci0JCWNvbG9ycysrOworICAgICAgICBnZGtjb2xvciA9IG1ha2VfZ2RrY29sb3IoY29sb3JzKTsK
KyAgICAgICAgcmJfYXJ5X3B1c2goYXJ5LCBtYWtlX2dka2NvbG9yKChjb2xvcnMpW2ldKSk7CiAg
ICAgfQogICAgIHJldHVybiBhcnk7CiB9Cg
--Multipart_Sat__5_May_2001_23:36:30_+0900_081aa098
Content-Type: application/octet-stream;
 namebgdkcolor.c.patch2"
Content-Disposition: attachment;
 filenamebgdkcolor.c.patch2"
Content-Transfer-Encoding: base64

LS0tIHNyYy9yYmdka2NvbG9yLmMub3JnCVNhdCBNYXkgIDUgMjA6MDg6NDUgMjAwMQorKysgc3Jj
L3JiZ2RrY29sb3IuYwlTYXQgTWF5ICA1IDIzOjEyOjUyIDIwMDEKQEAgLTY1LDE3ICs2NSwyNyBA
QAogICAgIFZBTFVFIHNlbGY7CiB7CiAgICAgR2RrQ29sb3JtYXAgKmNtYXA7Ci0JR2RrQ29sb3Ig
KmNvbG9yczsKLSAgICBWQUxVRSBhcnkgPSByYl9hcnlfbmV3KCk7CisgICAgR2RrQ29sb3IgKmNv
bG9yczsKKyAgICBHZGtWaXN1YWwgKnZpc3VhbDsKKyAgICBWQUxVRSBhcnk7CiAgICAgaW50IGk7
CiAKLQljbWFwID0gZ2V0X2dka2NtYXAoc2VsZik7Ci0JY29sb3JzID0gY21hcC0+Y29sb3JzOwot
ICAgIGZvciAoaSA9IDA7IGkgPCBjbWFwLT5zaXplOyBpKyspIHsKLQkJcmJfYXJ5X3B1c2goYXJ5
LCBtYWtlX2dka2NvbG9yKGNvbG9ycykpOwotCQljb2xvcnMrKzsKKyAgICBjbWFwID0gZ2V0X2dk
a2NtYXAoc2VsZik7CisgICAgY29sb3JzID0gY21hcC0+Y29sb3JzOworCisgICAgdmlzdWFsID0g
Z2RrX2NvbG9ybWFwX2dldF92aXN1YWwoY21hcCk7CisKKyAgICBpZiAodmlzdWFsLT50eXBlID09
IEdES19WSVNVQUxfR1JBWVNDQUxFIHx8CisgICAgICAgICAgdmlzdWFsLT50eXBlID09IEdES19W
SVNVQUxfUFNFVURPX0NPTE9SKSB7CisgICAgICAgIGFyeSA9IHJiX2FyeV9uZXcoKTsKKyAgICAg
ICAgZm9yIChpID0gMDsgaSA8IGNtYXAtPnNpemU7IGkrKykgeworICAgICAgICAgICAgcmJfYXJ5
X3B1c2goYXJ5LCBtYWtlX2dka2NvbG9yKGNvbG9ycykpOworICAgICAgICAgICAgY29sb3JzKys7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFyeTsKKyAgICB9IGVsc2UgeworICAgICAgICBy
ZXR1cm4gUW5pbDsKICAgICB9Ci0gICAgcmV0dXJuIGFyeTsKIH0KIAogLyoK

--Multipart_Sat__5_May_2001_23:36:30_+0900_081aa098--