mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* pack.c (pack_pack): template f should not accept non float
values. [ruby-dev:37656] * object.c (rb_to_float): new function to type check floats. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6bbd76a732
commit
ad00464489
4 changed files with 24 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
Mon Dec 29 22:37:57 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* pack.c (pack_pack): template f should not accept non float
|
||||
values. [ruby-dev:37656]
|
||||
|
||||
* object.c (rb_to_float): new function to type check floats.
|
||||
|
||||
Mon Dec 29 22:27:11 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* random.c (rb_f_rand): type check simplified. strings are no
|
||||
|
|
|
@ -434,6 +434,7 @@ VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
|
|||
VALUE rb_check_to_integer(VALUE, const char *);
|
||||
VALUE rb_to_int(VALUE);
|
||||
VALUE rb_Integer(VALUE);
|
||||
VALUE rb_to_float(VALUE);
|
||||
VALUE rb_Float(VALUE);
|
||||
VALUE rb_String(VALUE);
|
||||
VALUE rb_Array(VALUE);
|
||||
|
|
15
object.c
15
object.c
|
@ -2267,6 +2267,21 @@ rb_f_float(VALUE obj, VALUE arg)
|
|||
return rb_Float(arg);
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_to_float(VALUE val)
|
||||
{
|
||||
VALUE v;
|
||||
|
||||
if (TYPE(val) == T_FLOAT) return val;
|
||||
v = convert_type(val, "Float", "to_f", Qtrue);
|
||||
if (TYPE(v) != T_FLOAT) {
|
||||
const char *cname = rb_obj_classname(val);
|
||||
rb_raise(rb_eTypeError, "can't convert %s to Float (%s#to_f gives %s)",
|
||||
cname, cname, rb_obj_classname(v));
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
double
|
||||
rb_num2dbl(VALUE val)
|
||||
{
|
||||
|
|
2
pack.c
2
pack.c
|
@ -789,7 +789,7 @@ pack_pack(VALUE ary, VALUE fmt)
|
|||
float f;
|
||||
|
||||
from = NEXTFROM;
|
||||
f = RFLOAT_VALUE(rb_Float(from));
|
||||
f = RFLOAT_VALUE(rb_to_float(from));
|
||||
rb_str_buf_cat(res, (char*)&f, sizeof(float));
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue