aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--marshal.c49
1 files changed, 32 insertions, 17 deletions
diff --git a/marshal.c b/marshal.c
index 40546a7c0a..de6ed607b0 100644
--- a/marshal.c
+++ b/marshal.c
@@ -85,6 +85,19 @@ static ID s_dump, s_load, s_mdump, s_mload;
static ID s_dump_data, s_load_data, s_alloc, s_call;
static ID s_getbyte, s_read, s_write, s_binmode;
+#define name_s_dump "_dump"
+#define name_s_load "_load"
+#define name_s_mdump "marshal_dump"
+#define name_s_mload "marshal_load"
+#define name_s_dump_data "_dump_data"
+#define name_s_load_data "_load_data"
+#define name_s_alloc "_alloc"
+#define name_s_call "call"
+#define name_s_getbyte "getbyte"
+#define name_s_read "read"
+#define name_s_write "write"
+#define name_s_binmode "binmode"
+
typedef struct {
VALUE newclass;
VALUE oldclass;
@@ -151,13 +164,14 @@ struct dump_call_arg {
};
static void
-check_dump_arg(struct dump_arg *arg, ID sym)
+check_dump_arg(struct dump_arg *arg, const char *name)
{
if (!arg->symbols) {
rb_raise(rb_eRuntimeError, "Marshal.dump reentered at %s",
- rb_id2name(sym));
+ name);
}
}
+#define check_dump_arg(arg, sym) check_dump_arg(arg, name_##sym)
static void clear_dump_arg(struct dump_arg *arg);
@@ -1032,13 +1046,14 @@ struct load_arg {
};
static void
-check_load_arg(struct load_arg *arg, ID sym)
+check_load_arg(struct load_arg *arg, const char *name)
{
if (!arg->symbols) {
rb_raise(rb_eRuntimeError, "Marshal.load reentered at %s",
- rb_id2name(sym));
+ name);
}
}
+#define check_load_arg(arg, sym) check_load_arg(arg, name_##sym)
static void clear_load_arg(struct load_arg *arg);
@@ -2154,19 +2169,19 @@ Init_marshal(void)
#define rb_intern(str) rb_intern_const(str)
VALUE rb_mMarshal = rb_define_module("Marshal");
-
- s_dump = rb_intern("_dump");
- s_load = rb_intern("_load");
- s_mdump = rb_intern("marshal_dump");
- s_mload = rb_intern("marshal_load");
- s_dump_data = rb_intern("_dump_data");
- s_load_data = rb_intern("_load_data");
- s_alloc = rb_intern("_alloc");
- s_call = rb_intern("call");
- s_getbyte = rb_intern("getbyte");
- s_read = rb_intern("read");
- s_write = rb_intern("write");
- s_binmode = rb_intern("binmode");
+#define set_id(sym) sym = rb_intern_const(name_##sym)
+ set_id(s_dump);
+ set_id(s_load);
+ set_id(s_mdump);
+ set_id(s_mload);
+ set_id(s_dump_data);
+ set_id(s_load_data);
+ set_id(s_alloc);
+ set_id(s_call);
+ set_id(s_getbyte);
+ set_id(s_read);
+ set_id(s_write);
+ set_id(s_binmode);
rb_define_module_function(rb_mMarshal, "dump", marshal_dump, -1);
rb_define_module_function(rb_mMarshal, "load", marshal_load, -1);