summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--debug.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 01f47dc..e216c58 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jul 25 16:59:00 2016 Koichi Sasada <ko1@atdot.net>
+
+ * debug.c (ruby_debug_printf): use rb_raw_obj_info()
+ instead of rb_inspect() because it is more robust way
+ to see object internal.
+
Sun Jul 24 16:33:13 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* regenc.h/c, include/ruby/oniguruma.h, enc/ascii.c, big5.c, cp949.c,
diff --git a/debug.c b/debug.c
index a600259..8a5e69b 100644
--- a/debug.c
+++ b/debug.c
@@ -59,14 +59,16 @@ ruby_debug_printf(const char *format, ...)
va_end(ap);
}
+#include "gc.h"
+
VALUE
ruby_debug_print_value(int level, int debug_level, const char *header, VALUE obj)
{
if (level < debug_level) {
- VALUE str;
- str = rb_inspect(obj);
- fprintf(stderr, "DBG> %s: %s\n", header,
- obj == (VALUE)(SIGNED_VALUE)-1 ? "" : StringValueCStr(str));
+ char buff[0x100];
+ rb_raw_obj_info(buff, 0x100, obj);
+
+ fprintf(stderr, "DBG> %s: %s\n", header, buff);
fflush(stderr);
}
return obj;