summaryrefslogtreecommitdiff
path: root/debug.c
diff options
context:
space:
mode:
authorPeter Zhu <[email protected]>2024-03-22 10:48:01 -0400
committerPeter Zhu <[email protected]>2024-03-25 13:07:39 -0400
commit9cf754b648bc04f0c1e8f9274e6047ff25c1b3e3 (patch)
tree8770d604b864fb5d2827397089526617f7e7b996 /debug.c
parent46bf6ae886dc14d5e3a76d53eb4f97375f7c03c5 (diff)
Fix --debug=gc_stress flag
ruby_env_debug_option gets called after Init_gc_stress, so the --debug=gc_stress flag never works.
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/debug.c b/debug.c
index 755f275316..e194472c1a 100644
--- a/debug.c
+++ b/debug.c
@@ -185,9 +185,9 @@ ruby_env_debug_option(const char *str, int len, void *arg)
int ov;
size_t retlen;
unsigned long n;
+#define NAME_MATCH(name) (len == sizeof(name) - 1 && strncmp(str, (name), len) == 0)
#define SET_WHEN(name, var, val) do { \
- if (len == sizeof(name) - 1 && \
- strncmp(str, (name), len) == 0) { \
+ if (NAME_MATCH(name)) { \
(var) = (val); \
return 1; \
} \
@@ -221,7 +221,10 @@ ruby_env_debug_option(const char *str, int len, void *arg)
#define SET_WHEN_UINT(name, vals, num, req) \
if (NAME_MATCH_VALUE(name)) SET_UINT_LIST(name, vals, num);
- SET_WHEN("gc_stress", *ruby_initial_gc_stress_ptr, Qtrue);
+ if (NAME_MATCH("gc_stress")) {
+ rb_gc_stress_set(Qtrue);
+ return 1;
+ }
SET_WHEN("core", ruby_enable_coredump, 1);
SET_WHEN("ci", ruby_on_ci, 1);
if (NAME_MATCH_VALUE("rgengc")) {