diff options
author | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-13 08:05:43 +0000 |
---|---|---|
committer | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-13 08:05:43 +0000 |
commit | 75de442dd0b7eb7325f61610f096e2a469c2eff5 (patch) | |
tree | 64762ff6f11df092463a201f88529146ff4a4742 /ext | |
parent | a49ad9a639fc6b6e5643966791cc9a1c80f23cb3 (diff) | |
download | ruby-75de442dd0b7eb7325f61610f096e2a469c2eff5.tar.gz |
* ext/date/date_core.c: [ruby-core:38861]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32968 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/date/date_core.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/ext/date/date_core.c b/ext/date/date_core.c index c78eda47a9..251d025b12 100644 --- a/ext/date/date_core.c +++ b/ext/date/date_core.c @@ -6609,30 +6609,39 @@ static VALUE mk_inspect_raw(union DateData *x, const char *klass) { if (simple_dat_p(x)) { + VALUE nth, flags; + + RB_GC_GUARD(nth) = f_inspect(x->s.nth); + RB_GC_GUARD(flags) = mk_inspect_flags(x); + return rb_enc_sprintf(rb_usascii_encoding(), "#<%s: " "(%sth,%dj),+0s,%.0fj; " "%dy%dm%dd; %s>", klass ? klass : "?", - RSTRING_PTR(f_inspect(x->s.nth)), - x->s.jd, x->s.sg, + RSTRING_PTR(nth), x->s.jd, x->s.sg, #ifndef USE_PACK x->s.year, x->s.mon, x->s.mday, #else x->s.year, EX_MON(x->s.pc), EX_MDAY(x->s.pc), #endif - RSTRING_PTR(mk_inspect_flags(x))); + RSTRING_PTR(flags)); } else { + VALUE nth, sf, flags; + + RB_GC_GUARD(nth) = f_inspect(x->c.nth); + RB_GC_GUARD(sf) = f_inspect(x->c.sf); + RB_GC_GUARD(flags) = mk_inspect_flags(x); + return rb_enc_sprintf(rb_usascii_encoding(), "#<%s: " "(%sth,%dj,%ds,%sn),%+ds,%.0fj; " "%dy%dm%dd %dh%dm%ds; %s>", klass ? klass : "?", - RSTRING_PTR(f_inspect(x->c.nth)), - x->c.jd, x->c.df, - RSTRING_PTR(f_inspect(x->c.sf)), + RSTRING_PTR(nth), x->c.jd, x->c.df, + RSTRING_PTR(sf), x->c.of, x->c.sg, #ifndef USE_PACK x->c.year, x->c.mon, x->c.mday, @@ -6643,7 +6652,7 @@ mk_inspect_raw(union DateData *x, const char *klass) EX_HOUR(x->c.pc), EX_MIN(x->c.pc), EX_SEC(x->c.pc), #endif - RSTRING_PTR(mk_inspect_flags(x))); + RSTRING_PTR(flags)); } } @@ -6658,12 +6667,16 @@ d_lite_inspect_raw(VALUE self) static VALUE mk_inspect(union DateData *x, const char *klass, const char *to_s) { + VALUE jd, sf; + + RB_GC_GUARD(jd) = f_inspect(m_real_jd(x)); + RB_GC_GUARD(sf) = f_inspect(m_sf(x)); + return rb_enc_sprintf(rb_usascii_encoding(), "#<%s: %s ((%sj,%ds,%sn),%+ds,%.0fj)>", klass ? klass : "?", to_s ? to_s : "?", - RSTRING_PTR(f_inspect(m_real_jd(x))), m_df(x), - RSTRING_PTR(f_inspect(m_sf(x))), + RSTRING_PTR(jd), m_df(x), RSTRING_PTR(sf), m_of(x), m_sg(x)); } @@ -6685,8 +6698,12 @@ static VALUE d_lite_inspect(VALUE self) { get_d1(self); - return mk_inspect(dat, rb_obj_classname(self), - RSTRING_PTR(f_to_s(self))); + { + VALUE to_s; + + RB_GC_GUARD(to_s) = f_to_s(self); + return mk_inspect(dat, rb_obj_classname(self), RSTRING_PTR(to_s)); + } } #include <errno.h> |