ext/vector_source.c in gsl-1.12.108 vs ext/vector_source.c in gsl-1.12.109
- old
+ new
@@ -444,10 +444,16 @@
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
other = argv[argc-1];
if(argc == 1) {
- FUNCTION(gsl_vector,set_all)(v, NUMCONV2(other));
+ // // If assigning from another vector
+ if(VECTOR_P(other) || VECTOR_INT_P(other)) {
+ // treat as assignment to v.subvector(...)
+ FUNCTION(rb_gsl_vector,set_subvector)(argc-1, argv, v, other);
+ } else {
+ FUNCTION(gsl_vector,set_all)(v, NUMCONV2(other));
+ }
} else if(argc == 2 && TYPE(argv[0]) == T_FIXNUM) {
// v[i] = x
ii = FIX2INT(argv[0]);
if(ii < 0) ii += v->size;
FUNCTION(gsl_vector,set)(v, (size_t)ii, NUMCONV2(other));