mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
50 lines
1.8 KiB
C
50 lines
1.8 KiB
C
$NetBSD: patch-ext_vector__source.c,v 1.1 2014/03/26 13:25:26 taca Exp $
|
|
|
|
Fix for Ruby 2.1.
|
|
|
|
--- ext/vector_source.c.orig 2014-03-25 15:47:30.000000000 +0000
|
|
+++ ext/vector_source.c
|
|
@@ -673,16 +673,36 @@ static VALUE FUNCTION(rb_gsl_vector,tran
|
|
static VALUE FUNCTION(rb_gsl_vector,trans_bang)(VALUE obj)
|
|
{
|
|
#ifdef BASE_DOUBLE
|
|
- if (CLASS_OF(obj) == cgsl_vector) RBASIC(obj)->klass = cgsl_vector_col;
|
|
- else if (CLASS_OF(obj) == cgsl_vector_col) RBASIC(obj)->klass = cgsl_vector;
|
|
- else {
|
|
+ if (CLASS_OF(obj) == cgsl_vector) {
|
|
+#if RUBY_API_VERSION_MAJOR >=2 && RUBY_API_VERSION_MINOR >= 1
|
|
+ rb_obj_reveal(obj, cgsl_vector_col);
|
|
+#else
|
|
+ RBASIC(obj)->klass = cgsl_vector_col;
|
|
+#endif
|
|
+ } else if (CLASS_OF(obj) == cgsl_vector_col) {
|
|
+#if RUBY_API_VERSION_MAJOR >=2 && RUBY_API_VERSION_MINOR >= 1
|
|
+ rb_obj_reveal(obj, cgsl_vector);
|
|
+#else
|
|
+ RBASIC(obj)->klass = cgsl_vector;
|
|
+#endif
|
|
+ } else {
|
|
rb_raise(rb_eRuntimeError, "method trans! for %s is not permitted.",
|
|
rb_class2name(CLASS_OF(obj)));
|
|
}
|
|
#elif defined(BASE_INT)
|
|
- if (CLASS_OF(obj) == cgsl_vector_int) RBASIC(obj)->klass = cgsl_vector_int_col;
|
|
- else if (CLASS_OF(obj) == cgsl_vector_int_col) RBASIC(obj)->klass = cgsl_vector_int;
|
|
- else {
|
|
+ if (CLASS_OF(obj) == cgsl_vector_int) {
|
|
+#if RUBY_API_VERSION_MAJOR >=2 && RUBY_API_VERSION_MINOR >= 1
|
|
+ rb_obj_reveal(obj, cgsl_vector_int_col);
|
|
+#else
|
|
+ RBASIC(obj)->klass = cgsl_vector_int_col;
|
|
+#endif
|
|
+ } else if (CLASS_OF(obj) == cgsl_vector_int_col) {
|
|
+#if RUBY_API_VERSION_MAJOR >=2 && RUBY_API_VERSION_MINOR >= 1
|
|
+ rb_obj_reveal(obj, cgsl_vector_int);
|
|
+#else
|
|
+ RBASIC(obj)->klass = cgsl_vector_int;
|
|
+#endif
|
|
+ } else {
|
|
rb_raise(rb_eRuntimeError, "method trans! for %s is not permitted.",
|
|
rb_class2name(CLASS_OF(obj)));
|
|
}
|