From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id CD47E1A00A08 for ; Wed, 30 Mar 2016 00:04:39 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 6E9C9B5D877 for ; Wed, 30 Mar 2016 00:41:27 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id 06DBC18CC80C for ; Wed, 30 Mar 2016 00:41:28 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 99A2612043A; Wed, 30 Mar 2016 00:41:27 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o10.shared.sendgrid.net (o10.shared.sendgrid.net [173.193.132.135]) by neon.ruby-lang.org (Postfix) with ESMTPS id 057B1120419 for ; Wed, 30 Mar 2016 00:41:23 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=icjWoYJTPcHe2nq/UYFCtzJgGMQ=; b=DsTIs98+JmRKPbKKCN Fhpwv6R45nBwA6oawrfF/seUM3Onb6jlk+v5rIExz4FwfG2j8TGEBiM2tAqrvYCa 2Eq6i9rf7+fEIctEVfJMXfrtepZZ4aW9CUFP0yii5A3z4axt7dkph3RIrbYlW+SG 8zudgunSfxsVRJg/dyl/wmDeY= Received: by filter0826p1mdw1.sendgrid.net with SMTP id filter0826p1mdw1.19574.56FAA213A 2016-03-29 15:41:07.120481626 +0000 UTC Received: from herokuapp.com (ec2-54-225-10-96.compute-1.amazonaws.com [54.225.10.96]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id dfZXS1fmR9ep-476UZp8Qg for ; Tue, 29 Mar 2016 15:41:07.060 +0000 (UTC) Date: Tue, 29 Mar 2016 15:41:06 +0000 From: naruse@airemix.jp To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 49326 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 12011 X-Redmine-Issue-Author: naruse X-Redmine-Sender: naruse X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS4/4BdYVY40DJ9QiJJyXPgVWFa7/POaQST9Re 0od3vBN5A3emeCbu1N3/cTr5bBx9yRBgpLXFS31K7tU4ODAMYGElXHcTJmbaKAt/klZbIfuFrhITij XeECr1eWDgOAJ1pVJSLaEqNkvRTQqcDLcY75 X-ML-Name: ruby-core X-Mail-Count: 74701 Subject: [ruby-core:74701] [Ruby trunk Bug#12011] honor Marshal.load post proc value for TYPE_LINK X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #12011 has been updated by Yui NARUSE. Backport changed from 2.0.0: DONTNEED, 2.1: DONE, 2.2: DONE, 2.3: REQUIRED to 2.0.0: DONTNEED, 2.1: DONE, 2.2: DONE, 2.3: DONE ruby_2_3 r54357 merged revision(s) 53609. ---------------------------------------- Bug #12011: honor Marshal.load post proc value for TYPE_LINK https://bugs.ruby-lang.org/issues/12011#change-57831 * Author: Yui NARUSE * Status: Closed * Priority: Normal * Assignee: * ruby -v: * Backport: 2.0.0: DONTNEED, 2.1: DONE, 2.2: DONE, 2.3: DONE ---------------------------------------- Following test doesn't work. A patch also attached. Both of them are worked by nahi. ```diff diff --git a/test/ruby/test_marshal.rb b/test/ruby/test_marshal.rb index 482637f..262e7f6 100644 --- a/test/ruby/test_marshal.rb +++ b/test/ruby/test_marshal.rb @@ -712,4 +712,10 @@ def test_no_internal_ids assert_predicate(status, :success?) assert_equal(expected, out) end + + def test_marshal_post_proc + str = 'x' # for link + obj = [str, str] + assert_equal(['X', 'X'], Marshal.load(Marshal.dump(obj), ->(v) { v == str ? v.upcase : v })) + end end diff --git a/marshal.c b/marshal.c index d67ce87..d64e5ff 100644 --- a/marshal.c +++ b/marshal.c @@ -1569,7 +1569,7 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod) rb_raise(rb_eArgError, "dump format error (unlinked)"); } v = (VALUE)link; - r_post_proc(v, arg); + v = r_post_proc(v, arg); break; case TYPE_IVAR: ``` https://github.com/ruby/ruby/pull/1204 -- https://bugs.ruby-lang.org/