@@ -168,6 +168,10 @@ namespace python_multi_array
168
168
T* ptr = This->origin ();
169
169
for (size_t i = 0 ; i < N; ++i)
170
170
{
171
+ if (This->shape ()[i] <= s[i])
172
+ {
173
+ throw std::invalid_argument (" index" );
174
+ }
171
175
ptr += This->strides ()[i] * s[i];
172
176
}
173
177
return *ptr;
@@ -179,6 +183,10 @@ namespace python_multi_array
179
183
T* ptr = This->origin ();
180
184
for (size_t i = 0 ; i < N; ++i)
181
185
{
186
+ if (This->shape ()[i] <= s[i])
187
+ {
188
+ throw std::invalid_argument (" index" );
189
+ }
182
190
ptr += This->strides ()[i] * s[i];
183
191
}
184
192
*ptr = value;
@@ -205,7 +213,7 @@ namespace python_multi_array
205
213
// assume idx to be a list or a tuple
206
214
if (N != python::len (idx))
207
215
{
208
- throw std::invalid_argument (" idx " );
216
+ throw std::invalid_argument (" index " );
209
217
}
210
218
size_t s[N];
211
219
for (size_t i = 0 ; i < N; ++i)
@@ -236,7 +244,7 @@ namespace python_multi_array
236
244
// assume idx to be a list or a tuple
237
245
if (N != python::len (idx))
238
246
{
239
- throw std::invalid_argument (" idx " );
247
+ throw std::invalid_argument (" index " );
240
248
}
241
249
size_t s[N];
242
250
for (size_t i = 0 ; i < N; ++i)
@@ -679,6 +687,7 @@ BOOST_PYTHON_MODULE(multi_array)
679
687
680
688
def (" make" , make);
681
689
690
+ // define aliases of numpy data types
682
691
python::scope This;
683
692
This.attr (" bool8" ) = bool8;
684
693
This.attr (" uint8" ) = uint8;
0 commit comments