Skip to content

Commit 62e3e64

Browse files
committed
Fixed problems preventing C extensions from building on some platforms.
1 parent 2e33d01 commit 62e3e64

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

ext/concurrent_ruby_ext/atomic_boolean.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "atomic_boolean.h"
44
#include "atomic_reference.h"
5-
#include "common.h"
5+
#include "ruby_193_compatible.h"
66

77
void atomic_boolean_mark(void *value) {
88
rb_gc_mark_maybe((VALUE) value);

ext/concurrent_ruby_ext/atomic_fixnum.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "atomic_fixnum.h"
44
#include "atomic_reference.h"
5-
#include "common.h"
5+
#include "ruby_193_compatible.h"
66

77
void atomic_fixnum_mark(void *value) {
88
rb_gc_mark_maybe((VALUE) value);

ext/concurrent_ruby_ext/common.h

-13
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef rb_check_arity
2+
3+
// https://github.com/ruby/ruby/blob/ruby_2_0_0/include/ruby/intern.h
4+
// rb_check_arity was added in Ruby 2.0
5+
6+
#define UNLIMITED_ARGUMENTS (-1)
7+
8+
static inline void rb_error_arity(int argc, int min, int max)
9+
{
10+
VALUE err_mess = 0;
11+
if (min == max) {
12+
err_mess = rb_sprintf("wrong number of arguments (%d for %d)", argc, min);
13+
}
14+
else if (max == UNLIMITED_ARGUMENTS) {
15+
err_mess = rb_sprintf("wrong number of arguments (%d for %d+)", argc, min);
16+
}
17+
else {
18+
err_mess = rb_sprintf("wrong number of arguments (%d for %d..%d)", argc, min, max);
19+
}
20+
rb_raise(rb_eTypeError, err_mess);
21+
}
22+
23+
#define rb_check_arity(argc, min, max) do { \
24+
if (((argc) < (min)) || ((argc) > (max) && (max) != UNLIMITED_ARGUMENTS)) \
25+
rb_error_arity(argc, min, max); \
26+
} while(0)
27+
28+
#endif

0 commit comments

Comments
 (0)