From: Eric Wong Date: 2011-08-09T09:55:02+09:00 Subject: [ruby-core:38865] [Ruby 1.9 - Bug #5171] [PATCH] date_core: RB_GC_GUARD temporary strings Issue #5171 has been updated by Eric Wong. File 0001-ext-date-date_strftime.c-date_strftime_with_tmx-RB_G.patch added I also have an extra safety fix in case date_strftime_with_tmx() changes in the future: ext/date/date_strftime.c (date_strftime_with_tmx): RB_GC_GUARD safety fix I don't think this has the potential to /currently/ cause errors because the pointer is used immediately (before further allocations). However it is still a risk if the code changes and allocates later in the function. There should also be a minor speedup from avoiding strlen(). git pull git://bogomips.org/ruby date-tmx_zone-paranoia ---------------------------------------- Bug #5171: [PATCH] date_core: RB_GC_GUARD temporary strings http://redmine.ruby-lang.org/issues/5171 Author: Eric Wong Status: Open Priority: Normal Assignee: tadayoshi funaba Category: ext Target version: 1.9.x ruby -v: ruby 1.9.4dev (2011-08-07 trunk 32885) [x86_64-linux] ext/date/date_core.c (d_lite_inspect): RB_GC_GUARD temporary strings test/date/test_date.rb: add test case with GC.stress=true RSTRING_PTR() should not be used directly on function calls: 1) it may drop the VALUE reference from the stack/register set and and allow GC to collect it 2) macros can evaluate the function call multiple times If DNDEBUG is not defined, Date#inspect_raw also has the same issue. However, I think removing the Date#inspect_raw code entirely is better. If you prefer to use "git pull": git pull git://bogomips.org/ruby date_core-gc-guard -- http://redmine.ruby-lang.org