From: Yutaka Kanemoto Date: 2011-06-13T19:47:19+09:00 Subject: [ruby-dev:43781] Re: [ruby-cvs:38869] nobu:r31690 (trunk): * gc.c (vm_xcalloc): use calloc provided by platforms. --0015176f0a68959d2804a595a444 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 金本と申します。 たびたびすみません。 おくったパッチはvm_xcalloc()の方がまちがっていたので、 すこし手直ししたものを送ります。 非常に場当たりなパッチで恐縮なのですが、 やりたいことの意図がつたわればと思っています。 よろしくお願いします。 2011年6月13日18:55 Yutaka Kanemoto : ... > ひと月ほど前の以下のvm_xcalloc()の導入時の変更で、 > 現状(r32051)でvm_malloc_prepare()にある720行目から724行目までのコードが、 > 実際のmalloc()時に反映されていません。 > > gc.c@32051 > 714 static inline void > 715 vm_malloc_prepare(rb_objspace_t *objspace, size_t size) > 716 { > 717 if ((ssize_t)size < 0) { > 718 negative_size_allocation_error("negative allocation > size (or too big)"); > 719 } > 720 if (size == 0) size = 1; > 721 > 722 #if CALC_EXACT_MALLOC_SIZE > 723 size += sizeof(size_t); > 724 #endif > > AIXでは0 size mallocでNULLが返るのでこまったことになっています。 > > この関数でsizeの新しい数値を返してそれを利用するパッチを書いてみました。 > こんなのでよければコミットさせていただきますが、 > やっぱり返り値を変えるのはどうかと思ったので、 > 一度ご調査いただけますでしょうか? > あるいは0 size mallocは今後は避けられないなどご意見いただきたいです。 > よろしくお願いいたします。 -- Yutaka KANEMOTO http://d.hatena.ne.jp/kinpoco/ --0015176f0a68959d2804a595a444 Content-Type: text/x-patch; charset=US-ASCII; name="gc.diff" Content-Disposition: attachment; filename="gc.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_govaih0a1 SW5kZXg6IGdjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2MuYwkocmV2aXNpb24gMzIwNTEpCisrKyBnYy5j CSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNiArNTU0LDcgQEAKIAlHRVRfVEhSRUFEKCktPmVycmlu Zm8gPSBub21lbV9lcnJvcjsKIAlKVU1QX1RBRyhUQUdfUkFJU0UpOwogICAgIH0KKyAgICBhYm9y dCgpOwogICAgIHJiX3RocmVhZF9yYWlzZWRfc2V0KHRoLCBSQUlTRURfTk9NRU1PUlkpOwogICAg IHJiX2V4Y19yYWlzZShub21lbV9lcnJvcik7CiB9CkBAIC03MTEsNyArNzEyLDcgQEAKIAogc3Rh dGljIHZvaWQgdm1feGZyZWUocmJfb2Jqc3BhY2VfdCAqb2Jqc3BhY2UsIHZvaWQgKnB0cik7CiAK LXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBzaXplX3QKIHZtX21hbGxvY19wcmVw YXJlKHJiX29ianNwYWNlX3QgKm9ianNwYWNlLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoKHNz aXplX3Qpc2l6ZSA8IDApIHsKQEAgLTcyNyw2ICs3MjgsNyBAQAogCShtYWxsb2NfaW5jcmVhc2Ur c2l6ZSkgPiBtYWxsb2NfbGltaXQpIHsKIAlnYXJiYWdlX2NvbGxlY3Rfd2l0aF9ndmwob2Jqc3Bh Y2UpOwogICAgIH0KKyAgICByZXR1cm4gc2l6ZTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkICoK QEAgLTc1Nyw3ICs3NTksNyBAQAogewogICAgIHZvaWQgKm1lbTsKIAotICAgIHZtX21hbGxvY19w cmVwYXJlKG9ianNwYWNlLCBzaXplKTsKKyAgICBzaXplID0gdm1fbWFsbG9jX3ByZXBhcmUob2Jq c3BhY2UsIHNpemUpOwogICAgIFRSWV9XSVRIX0dDKG1lbSA9IG1hbGxvYyhzaXplKSk7CiAgICAg cmV0dXJuIHZtX21hbGxvY19maXh1cChvYmpzcGFjZSwgbWVtLCBzaXplKTsKIH0KQEAgLTg0Mywx MSArODQ1LDEwIEBACiBzdGF0aWMgdm9pZCAqCiB2bV94Y2FsbG9jKHJiX29ianNwYWNlX3QgKm9i anNwYWNlLCBzaXplX3QgY291bnQsIHNpemVfdCBlbHNpemUpCiB7CisKICAgICB2b2lkICptZW07 Ci0gICAgY29uc3Qgc2l6ZV90IHNpemUgPSB4bWFsbG9jMl9zaXplKGNvdW50LCBlbHNpemUpOwot Ci0gICAgdm1fbWFsbG9jX3ByZXBhcmUob2Jqc3BhY2UsIHNpemUpOwotICAgIFRSWV9XSVRIX0dD KG1lbSA9IGNhbGxvYyhjb3VudCwgZWxzaXplKSk7CisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSB2 bV9tYWxsb2NfcHJlcGFyZShvYmpzcGFjZSwgeG1hbGxvYzJfc2l6ZShjb3VudCwgZWxzaXplKSk7 CisgICAgVFJZX1dJVEhfR0MobWVtID0gY2FsbG9jKDEsIHNpemUpKTsKICAgICByZXR1cm4gdm1f bWFsbG9jX2ZpeHVwKG9ianNwYWNlLCBtZW0sIHNpemUpOwogfQogCg== --0015176f0a68959d2804a595a444--