summaryrefslogtreecommitdiff
path: root/marshal.c
diff options
context:
space:
mode:
Diffstat (limited to 'marshal.c')
-rw-r--r--marshal.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/marshal.c b/marshal.c
index 6a68b04352..a22ddf244f 100644
--- a/marshal.c
+++ b/marshal.c
@@ -12,8 +12,12 @@
#include "rubyio.h"
#include "st.h"
+#ifndef atof
+double strtod();
+#endif
+
#define MARSHAL_MAJOR 4
-#define MARSHAL_MINOR 0
+#define MARSHAL_MINOR 1
#define TYPE_NIL '0'
#define TYPE_TRUE 'T'
@@ -164,7 +168,7 @@ w_unique(s, arg)
static void w_object _((VALUE,struct dump_arg*,int));
static int
-rb_hash_each(key, value, arg)
+hash_each(key, value, arg)
VALUE key, value;
struct dump_call_arg *arg;
{
@@ -174,7 +178,7 @@ rb_hash_each(key, value, arg)
}
static int
-rb_obj_each(id, value, arg)
+obj_each(id, value, arg)
ID id;
VALUE value;
struct dump_call_arg *arg;
@@ -249,7 +253,7 @@ w_object(obj, arg, limit)
w_byte(TYPE_USERDEF, arg);
w_unique(rb_class2name(CLASS_OF(obj)), arg);
- v = rb_funcall(obj, s_dump, 1, limit);
+ v = rb_funcall(obj, s_dump, 1, INT2NUM(limit));
if (TYPE(v) != T_STRING) {
rb_raise(rb_eTypeError, "_dump_to must return String");
}
@@ -320,7 +324,7 @@ w_object(obj, arg, limit)
w_uclass(obj, rb_cHash, arg);
w_byte(TYPE_HASH, arg);
w_long(RHASH(obj)->tbl->num_entries, arg);
- st_foreach(RHASH(obj)->tbl, rb_hash_each, &c_arg);
+ st_foreach(RHASH(obj)->tbl, hash_each, &c_arg);
break;
case T_STRUCT:
@@ -357,7 +361,7 @@ w_object(obj, arg, limit)
w_unique(path, arg);
if (ROBJECT(obj)->iv_tbl) {
w_long(ROBJECT(obj)->iv_tbl->num_entries, arg);
- st_foreach(ROBJECT(obj)->iv_tbl, rb_obj_each, &c_arg);
+ st_foreach(ROBJECT(obj)->iv_tbl, obj_each, &c_arg);
}
else {
w_long(0, arg);
@@ -641,13 +645,10 @@ r_object(arg)
case TYPE_FLOAT:
{
-#ifndef atof
- double atof();
-#endif
char *buf;
r_bytes(buf, arg);
- v = rb_float_new(atof(buf));
+ v = rb_float_new(strtod(buf, 0));
return r_regist(v, arg);
}
@@ -754,7 +755,7 @@ r_object(arg)
v = rb_funcall(klass, s_load, 1, r_string(arg));
return r_regist(v, arg);
}
- rb_raise(rb_eTypeError, "class %s needs to have method `_load_from'",
+ rb_raise(rb_eTypeError, "class %s needs to have method `_load'",
rb_class2name(klass));
}
break;