summaryrefslogtreecommitdiff
path: root/load.c
diff options
context:
space:
mode:
Diffstat (limited to 'load.c')
-rw-r--r--load.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/load.c b/load.c
index 9d389f9efb..2672051727 100644
--- a/load.c
+++ b/load.c
@@ -405,7 +405,15 @@ load_lock(const char *ftptr)
rb_warning("loading in progress, circular require considered harmful - %s", ftptr);
rb_backtrace();
}
- return RTEST(rb_barrier_wait((VALUE)data)) ? (char *)ftptr : 0;
+ switch (rb_barrier_wait((VALUE)data)) {
+ case Qfalse:
+ data = (st_data_t)ftptr;
+ st_delete(loading_tbl, &data, 0);
+ return 0;
+ case Qnil:
+ return 0;
+ }
+ return (char *)ftptr;
}
static void