summaryrefslogtreecommitdiff
path: root/random.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-11-08 09:06:21 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-11-10 11:59:45 +0900
commit6eaed20e145c1ab4c9c4ccf669d0ebea934f4d36 (patch)
treeec43f8696b661dcd8d19ad60e353999fbac0490b /random.c
parent0ae5de1a5ddcca407dd2ba30ca5d5f3d7c3ea4bc (diff)
Add version to the interface of Random extensions
Diffstat (limited to 'random.c')
-rw-r--r--random.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/random.c b/random.c
index f8879cfb88..100a54f4e4 100644
--- a/random.c
+++ b/random.c
@@ -400,6 +400,15 @@ random_init(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eTypeError, "undefined random interface: %s",
RTYPEDDATA_TYPE(obj)->wrap_struct_name);
}
+
+ unsigned int major = rng->version.major;
+ unsigned int minor = rng->version.minor;
+ if (major != RUBY_RANDOM_INTERFACE_VERSION_MAJOR) {
+ rb_raise(rb_eTypeError, "Random interface version "
+ STRINGIZE(RUBY_RANDOM_INTERFACE_VERSION_MAJOR) "."
+ STRINGIZE(RUBY_RANDOM_INTERFACE_VERSION_MINOR) " "
+ "expected: %d.%d", major, minor);
+ }
argc = rb_check_arity(argc, 0, 1);
rb_check_frozen(obj);
if (argc == 0) {