فهرست منبع

Don't concat array when unable to determine data size. Fixes #85.

woollybah 6 سال پیش
والد
کامیت
9ae8d01988
1فایلهای تغییر یافته به همراه10 افزوده شده و 1 حذف شده
  1. 10 1
      blitz.mod/blitz_array.c

+ 10 - 1
blitz.mod/blitz_array.c

@@ -317,8 +317,17 @@ BBArray *bbArrayConcat( const char *type,BBArray *x,BBArray *y ){
 	int length=x->scales[0]+y->scales[0];
 	int length=x->scales[0]+y->scales[0];
 	
 	
 	if( length<=0 ) return &bbEmptyArray;
 	if( length<=0 ) return &bbEmptyArray;
+	
+	int data_size = x->data_size != 0 ? x->data_size : y->data_size;
+
+	// both arrays are empty?
+	if (data_size == 0) return &bbEmptyArray;
 
 
-	arr=allocateArray( type,1,&length,x->data_size );
+	if (x->data_size > 0 && y->data_size > 0 && strcmp(x->type, y->type)) {
+		brl_blitz_RuntimeError(bbStringFromCString("Incompatible array element types for concatenation"));
+	}
+
+	arr=allocateArray( type,1,&length, data_size );
 	
 	
 	data=(char*)BBARRAYDATA( arr,1 );
 	data=(char*)BBARRAYDATA( arr,1 );