@@ -38,7 +38,7 @@ var isAllowedCast = require( '@stdlib/ndarray-base-assert-is-allowed-data-type-c
38
38
var createBuffer = require ( '@stdlib/ndarray-base-buffer' ) ;
39
39
var getType = require ( '@stdlib/ndarray-base-buffer-dtype' ) ;
40
40
var arrayShape = require ( '@stdlib/array-shape' ) ;
41
- var flattenArray = require ( '@stdlib/utils-flatten-array ' ) ;
41
+ var flatten = require ( '@stdlib/array-base-flatten ' ) ;
42
42
var format = require ( '@stdlib/string-format' ) ;
43
43
var isArrayLikeObject = require ( './is_array_like_object.js' ) ;
44
44
var getDefaults = require ( './defaults.js' ) ;
@@ -122,6 +122,7 @@ function array() {
122
122
var ndims ;
123
123
var nopts ;
124
124
var opts ;
125
+ var osh ;
125
126
var len ;
126
127
var ord ;
127
128
var FLG ;
@@ -280,6 +281,7 @@ function array() {
280
281
len = buffer . length ;
281
282
} else if ( opts . flatten && isArray ( buffer ) ) {
282
283
shape = arrayShape ( buffer ) ;
284
+ osh = shape ; // cache a reference to the inferred shape
283
285
ndims = shape . length ;
284
286
len = numel ( shape ) ;
285
287
} else {
@@ -313,7 +315,7 @@ function array() {
313
315
}
314
316
} else if ( buffer ) {
315
317
if ( btype === 'generic' && opts . flatten ) {
316
- buffer = flattenArray ( buffer ) ;
318
+ buffer = flatten ( buffer , osh || arrayShape ( buffer ) , false ) ;
317
319
}
318
320
if ( buffer . length !== len ) {
319
321
throw new RangeError ( 'invalid arguments. Array shape is incompatible with provided data source. Number of data source elements does not match array shape.' ) ;
0 commit comments