@@ -450,6 +450,12 @@ ruby_verbose2(void)
return ruby_verbose;
}
+static int *
+rb_errno_ptr2(void)
+{
+ return rb_errno_ptr();
+}
+
static int
type_p(VALUE obj, int t)
{
@@ -724,6 +730,7 @@ rb_parser_config_initialize(rb_parser_config_t *config)
config->bug = rb_bug;
config->fatal = rb_fatal;
config->verbose = ruby_verbose2;
+ config->errno_ptr = rb_errno_ptr2;
config->make_backtrace = rb_make_backtrace;
@@ -1352,6 +1352,7 @@ typedef struct rb_parser_config_struct {
void (*bug)(const char *fmt, ...);
void (*fatal)(const char *fmt, ...);
VALUE (*verbose)(void);
+ int *(*errno_ptr)(void);
/* VM */
VALUE (*make_backtrace)(void);
@@ -331,6 +331,8 @@ struct rb_imemo_tmpbuf_struct {
#define rb_fatal p->config->fatal
#undef ruby_verbose
#define ruby_verbose p->config->verbose()
+#undef errno
+#define errno (*p->config->errno_ptr())
#define rb_make_backtrace p->config->make_backtrace