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));