[前][次][番号順一覧][スレッド一覧]

ruby-changes:32514

From: nobu <ko1@a...>
Date: Tue, 14 Jan 2014 14:52:02 +0900 (JST)
Subject: [ruby-changes:32514] nobu:r44593 (trunk): bigdecimal.c: backword compatibility as gem

nobu	2014-01-14 14:51:58 +0900 (Tue, 14 Jan 2014)

  New Revision: 44593

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=44593

  Log:
    bigdecimal.c: backword compatibility as gem
    
    * ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback
      definition for 2.1 or older.  [ruby-core:59750] [Backport #9406]
    * ext/bigdecimal/bigdecimal.c (raise_with_class): fallback definition
      for 1.9.

  Modified files:
    trunk/ChangeLog
    trunk/ext/bigdecimal/bigdecimal.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 44592)
+++ ChangeLog	(revision 44593)
@@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Tue Jan 14 14:52:04 2014  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback
+	  definition for 2.1 or older.  [ruby-core:59750] [Backport #9406]
+
+	* ext/bigdecimal/bigdecimal.c (raise_with_class): fallback definition
+	  for 1.9.
+
 Tue Jan 14 11:28:44 2014  Yuki Yugui Sonoda  <yugui@g...>
 
 	* vm_exec.c (cfp): Fixes a SEGV issue in r44554.
Index: ext/bigdecimal/bigdecimal.c
===================================================================
--- ext/bigdecimal/bigdecimal.c	(revision 44592)
+++ ext/bigdecimal/bigdecimal.c	(revision 44593)
@@ -99,6 +99,17 @@ static ID id_eq; https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L99
 # define RRATIONAL_NEGATIVE_P(x) RTEST(rb_funcall((x), '<', 1, INT2FIX(0)))
 #endif
 
+#ifndef DECIMAL_SIZE_OF_BITS
+#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999)
+/* an approximation of ceil(n * log10(2)), upto 65536 at least */
+#endif
+
+#ifdef PRIsVALUE
+# define raise_with_class(e, pre, post, obj) rb_raise((e), pre "%" PRIsVALUE post, rb_obj_class(obj))
+#else
+# define raise_with_class(e, pre, post, obj) rb_raise((e), pre "%s" post, rb_obj_classname(obj))
+#endif
+
 /*
  * ================== Ruby Interface part ==========================
  */
@@ -273,9 +284,9 @@ SomeOneMayDoIt: https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L284
 
 unable_to_coerce_without_prec:
     if (must) {
-	rb_raise(rb_eArgError,
-		 "%s can't be coerced into BigDecimal without a precision",
-		 rb_obj_classname(v));
+	raise_with_class(rb_eArgError,
+			 "", " can't be coerced into BigDecimal without a precision",
+			 v);
     }
     return NULL;
 }
@@ -2260,9 +2271,9 @@ BigDecimal_power(int argc, VALUE*argv, V https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L2271
 	}
 	/* fall through */
       default:
-	rb_raise(rb_eTypeError,
-		 "wrong argument type %s (expected scalar Numeric)",
-		 rb_obj_classname(vexp));
+	raise_with_class(rb_eTypeError,
+			 "wrong argument type ", " (expected scalar Numeric)",
+			 vexp);
     }
 
     if (VpIsZero(x)) {
@@ -2519,9 +2530,9 @@ BigDecimal_new(int argc, VALUE *argv) https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c#L2530
 	/* fall through */
       case T_RATIONAL:
 	if (NIL_P(nFig)) {
-	    rb_raise(rb_eArgError,
-		     "can't omit precision for a %"PRIsVALUE".",
-		     rb_obj_class(iniValue));
+	    raise_with_class(rb_eArgError,
+			     "can't omit precision for a ", ".",
+			     iniValue);
 	}
 	return GetVpValueWithPrec(iniValue, mf, 1);
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]