From: Frederick Cheung Date: 2007-12-23T23:28:14+09:00 Subject: Re: [PATCH] Fix Symbol#to_proc --Apple-Mail-4-1069563105 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit On 23 Dec 2007, at 14:16, Nobuyoshi Nakada wrote: > Hi, > > At Sun, 23 Dec 2007 20:48:46 +0900, > Frederick Cheung wrote in [ruby-core:14310]: >> I noticed that as of 14511 Symbol#to_proc isn' working as I would >> expect/it's documented: >> irb(main):001:0> (1..3).map(&:to_s) => ["[1]", "[2]", "[3]"] > > Sorry. > >> I have created a patch to fix the issue and added a test for >> Symbol#to_proc. >> This is my first timing delving into the depths of Ruby itself, so if >> it looks like I'm doing something stupid, I probably am. > > I rather suspect that the wrong thing is [1] is passed in > argv[0], or argv is [[1]] in other words. > Far beyond my understanding, but seems to do the trick. Thanks for looking into it. Fred > > Index: proc.c > =================================================================== > --- proc.c (revision 14509) > +++ proc.c (working copy) > @@ -1394,5 +1394,5 @@ rb_proc_new( > VALUE procval = rb_iterate((VALUE(*)(VALUE))mproc, 0, func, val); > GetProcPtr(procval, proc); > - ((NODE*)proc->block.iseq)->u3.state = 1; > + proc->is_lambda = Qtrue; > return procval; > } > Index: vm.c > =================================================================== > --- vm.c (revision 14509) > +++ vm.c (working copy) > @@ -569,9 +569,4 @@ invoke_block(rb_thread_t *th, rb_block_t > } > else { > - if (((NODE*)block->iseq)->u3.state == 1) { > - VALUE args = rb_ary_new4(argc, argv); > - argc = 1; > - argv = &args; > - } > val = vm_yield_with_cfunc(th, block, self, argc, argv); > } > > > -- > Nobu Nakada > --Apple-Mail-4-1069563105 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMajCCAu4w ggJXoAMCAQICECD0Xq9OaJmjSBuYFJ/jQ/4wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA3MTAzMTEzNDAxOFoXDTA4MTAzMDEzNDAx OFowTDEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEpMCcGCSqGSIb3DQEJARYaZnJl ZGVyaWNrLmNoZXVuZ0BnbWFpbC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 Cxqo4jfMsWRQLa6NnngynSkKYgYZlPxtOZ2O0AvYpNXaxOxYf0wvIuDE0Fv1v+ETtCQv1oseHVxR woSVvTlLDag0M2M8AVbODT7KfDa8OH9d05KAZArDlz/BrsWmLRoUezDsppLSfhPSYzKZd4vzTKUT He5KazwR1rOXporaPhMEbhgH47mjTDtqBfsEUQXRqLMecJ/22YJmH+cUgGGJkX+tJWdLgUGAWDYi PSAQtrRaB8ncUYPaGlyMXidaiR+ZB/IlRILRbWAYXP00lPVS1acDQUHsX53Ll5cJgs8ONA9m7xsf bLYJubO7FlEwX1YuXZBlv0juH8jJGZsKbfe/AgMBAAGjNzA1MCUGA1UdEQQeMByBGmZyZWRlcmlj ay5jaGV1bmdAZ21haWwuY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAtbY9msAc 3jpcsZy8l1K+QkQxYoZf0qZycNLBnldPpg05yP0bbY11K/RFhNRiAau9mHZPOxe97Q40TRMrDVob QLiMAvD0lSKq3pWXUyGOz6AcLj24xZyeYcX6h2HuGeRmFiKlCVJBtfbjCLfdSSaBtQ64/Z8C9jNl rKR5kh8Mu64wggLuMIICV6ADAgECAhBCrOSERV0p8iQn6yLiyoemMA0GCSqGSIb3DQEBBQUAMGIx CzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYD VQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTAeFw0wNzA3MTcwOTI4MjNa Fw0wODA3MTYwOTI4MjNaMEwxHzAdBgNVBAMTFlRoYXd0ZSBGcmVlbWFpbCBNZW1iZXIxKTAnBgkq hkiG9w0BCQEWGmZyZWRlcmljay5jaGV1bmdAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA0okT5yzIXPOGR393h+a97mO9BxU3I+3dLvsucNGCbdBO8902L1WgyzCTltMg RAZEvKgMTFFVIlWDpJ9pb2JwhdMlxLsNAxEMilKmqx8jaHwx4NWBtMhbLo9n8RjBvezjO7dfhF1r anDiMft44Qf1/ub9akgTOyWI9QmfIDhHYTuCcJHfe/Be4xU8GkHJJNUIN+Z7+gZck68yfiRWZhNq xFNLzNJIZFocmN/jv7Q3YMtLmsmN5cb9e9ld6Gb8cn+CVcmQPJPY5Stmfk4w+FFNy4PQ9Q32Afl8 /vMc+4EFcJEE2NDxmgQ+HarRuak4zv8eM3Q2sW2UEhtmttJT2CbFVwIDAQABozcwNTAlBgNVHREE HjAcgRpmcmVkZXJpY2suY2hldW5nQGdtYWlsLmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEB BQUAA4GBAAd76tuC2gPGM6/4U1mV4INHkhO+KOlw1hGmNJhS3Qjgi3Zm5njxCSjqUAdpySyxLZ9b c/wns/g+QZVOzY4r2xeYYOGrXzbu/hGydOtp9Tw8qF7TNVDD2F1XrYK7JQJega8JYB8XHpzG7zrr vqive3jh43dOnd/BpH/HDuzDY/WZMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TEL MAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRow GAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl cyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZI hvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEz MDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQ dHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMIGf MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ox7svc31W/Ia dr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2JCoTzyvV84J3PQO+ K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wIDAQABo4GUMIGRMBIGA1Ud EwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC50aGF3dGUuY29tL1Ro YXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRow GAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOBgQBIjNFQg+oLLswNo2as Zw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCU YsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9l TzCCAz8wggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAwgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQI EwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1 bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMT G1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJl ZW1haWxAdGhhd3RlLmNvbTAeFw0wMzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNV BAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNU aGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw gYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNa LIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUq VIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1Ud HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWls Q0EuY3JsMAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVs Mi0xMzgwDQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYf qi2fNi/A9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa 9/eH1sYITq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8xggMQMIIDDAIBATB2MGIxCzAJ BgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQD EyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQIPRer05omaNIG5gUn+ND/jAJ BgUrDgMCGgUAoIIBbzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0w NzEyMjMxNDI4MTVaMCMGCSqGSIb3DQEJBDEWBBSxBWBcv5+gQin59yPMIhxK+SlFmTCBhQYJKwYB BAGCNxAEMXgwdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0 eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECEEKs 5IRFXSnyJCfrIuLKh6YwgYcGCyqGSIb3DQEJEAILMXigdjBiMQswCQYDVQQGEwJaQTElMCMGA1UE ChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFs IEZyZWVtYWlsIElzc3VpbmcgQ0ECEEKs5IRFXSnyJCfrIuLKh6YwDQYJKoZIhvcNAQEBBQAEggEA nHVzU4yLBZsj1uXIXab27wmh5/sM04T/hJgslU7v2NCKqA3XsTZtNYpaxfIC+J17FHyVYEh6Zw0r eeC9sFk7fQEuyBesRtJrRCi2FBl6Hn+YRpNXAKdNIkxyIklGjH3EzoNMPFTITYAOxAQovlo1aHxQ Q4MbW0aBKZx4ICM6OSN+idAhPACeNp10RU9R+qmSyPnjoRSfy04/5XTV1vnpVwGXmzRCtjihLNtt pAZAGP/HLTgQ2DhNJM08mLRGMHdIckCPJ2A89yG6dK126XMk5MhOBkitrOjrndH5r/0UF0t1hGIQ o0+OJyDWBEfLhrvLjIjEG8p84N0ar/GYb/mVdgAAAAAAAA== --Apple-Mail-4-1069563105--