Skip to content

Commit 31ca746

Browse files
committed
Fix slicing of non-byte memoryviews
1 parent 039762f commit 31ca746

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/memoryview/MemoryViewBuiltins.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,15 @@ Object getitemSlice(IntrinsifiedPMemoryView self, PSlice slice,
157157
@Cached MemoryViewNodes.InitFlagsNode initFlagsNode,
158158
@Cached MemoryViewNodes.GetBufferReferences getQueue) {
159159
self.checkReleased(this);
160-
// TODO ndim == 0
161-
// TODO profile ndim == 1
162-
PSlice.SliceInfo sliceInfo = adjustIndices.execute(self.getLength(), sliceUnpack.execute(slice));
160+
if (self.getDimensions() == 0) {
161+
throw raise(TypeError, ErrorMessages.INVALID_INDEXING_OF_0_DIM_MEMORY);
162+
}
163+
int[] shape = self.getBufferShape();
164+
PSlice.SliceInfo sliceInfo = adjustIndices.execute(shape[0], sliceUnpack.execute(slice));
163165
int[] strides = self.getBufferStrides();
164166
int[] newStrides = new int[strides.length];
165167
newStrides[0] = strides[0] * sliceInfo.step;
166168
PythonUtils.arraycopy(strides, 1, newStrides, 1, strides.length - 1);
167-
int[] shape = self.getBufferShape();
168169
int[] newShape = new int[shape.length];
169170
newShape[0] = sliceInfo.sliceLength;
170171
PythonUtils.arraycopy(shape, 1, newShape, 1, shape.length - 1);

0 commit comments

Comments
 (0)