Skip to content

Commit 2e8db09

Browse files
umar456pavanky
authored andcommitted
Empty arrays are 0, 1, 1, 1. Update isVector and tests.
1 parent 9bee0fc commit 2e8db09

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

src/api/c/array.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,10 @@ af_err af_create_handle(af_array *result, const unsigned ndims, const dim_t * co
9797
af_array out = 0;
9898
AF_CHECK(af_init());
9999

100-
dim4 d(0, 0, 0, 0);
100+
if (ndims > 0) {
101+
ARG_ASSERT(2, ndims > 0 && dims != NULL);
102+
}
103+
dim4 d(0);
101104
for(unsigned i = 0; i < ndims; i++) {
102105
d[i] = dims[i];
103106
}

src/api/cpp/array.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ namespace af
127127

128128
array::array() : arr(0)
129129
{
130-
initEmptyArray(&arr, f32, 0, 0, 0, 0);
130+
initEmptyArray(&arr, f32, 0, 1, 1, 1);
131131
}
132132

133133
array::array(const dim4 &dims, af::dtype ty) : arr(0)

src/backend/ArrayInfo.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,12 @@ bool ArrayInfo::isColumn() const
9999
bool ArrayInfo::isVector() const
100100
{
101101
int singular_dims = 0;
102+
int non_singular_dims = 0;
102103
for(int i = 0; i < AF_MAX_DIMS; i++) {
104+
non_singular_dims += (dims()[i] != 0 && dims()[i] != 1);
103105
singular_dims += (dims()[i] == 1);
104106
}
105-
return singular_dims == AF_MAX_DIMS - 1;
107+
return singular_dims == AF_MAX_DIMS - 1 && non_singular_dims == 1;
106108
}
107109

108110
bool ArrayInfo::isComplex() const

test/array.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ TEST(Array, ConstructorDefault)
2929
array a;
3030
EXPECT_EQ(0u, a.numdims());
3131
EXPECT_EQ(dim_t(0), a.dims(0));
32-
EXPECT_EQ(dim_t(0), a.dims(1));
33-
EXPECT_EQ(dim_t(0), a.dims(2));
34-
EXPECT_EQ(dim_t(0), a.dims(3));
3532
EXPECT_EQ(dim_t(0), a.elements());
3633
EXPECT_EQ(f32, a.type());
3734
EXPECT_EQ(0u, a.bytes());
@@ -411,6 +408,11 @@ TEST(Array, ISSUE_951)
411408
af::array b = a.cols(0, 20).rows(10, 20);
412409
}
413410

411+
TEST(Array, CreateHandleInvalidNullDimsPointer) {
412+
af_array out = 0;
413+
EXPECT_EQ(AF_ERR_ARG, af_create_handle(&out, 1, NULL, f32));
414+
}
415+
414416

415417
TEST(Device, simple)
416418
{

0 commit comments

Comments
 (0)