summaryrefslogtreecommitdiffstats
path: root/marshal.c
diff options
context:
space:
mode:
Diffstat (limited to 'marshal.c')
-rw-r--r--marshal.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/marshal.c b/marshal.c
index 842463928..58128ef0d 100644
--- a/marshal.c
+++ b/marshal.c
@@ -162,7 +162,7 @@ static void
mark_dump_arg(void *ptr)
{
struct dump_arg *p = ptr;
- if (!ptr)
+ if (!p->symbols)
return;
rb_mark_set(p->data);
rb_mark_hash(p->compat_tbl);
@@ -850,7 +850,9 @@ clear_dump_arg(struct dump_arg *arg)
st_free_table(arg->symbols);
arg->symbols = 0;
st_free_table(arg->data);
+ arg->data = 0;
st_free_table(arg->compat_tbl);
+ arg->compat_tbl = 0;
if (arg->encodings) {
st_free_table(arg->encodings);
arg->encodings = 0;
@@ -974,7 +976,7 @@ static void
mark_load_arg(void *ptr)
{
struct load_arg *p = ptr;
- if (!ptr)
+ if (!p->symbols)
return;
rb_mark_tbl(p->data);
rb_mark_hash(p->compat_tbl);
@@ -1714,7 +1716,9 @@ clear_load_arg(struct load_arg *arg)
st_free_table(arg->symbols);
arg->symbols = 0;
st_free_table(arg->data);
+ arg->data = 0;
st_free_table(arg->compat_tbl);
+ arg->compat_tbl = 0;
}
/*