rstride[n] = ret->dim[dim].stride * size;
sstride[n] = array->dim[dim].stride * size;
- hstride[n] = h->dim[n].stride;
+ hstride[n] = h->dim[n].stride * size;
n++;
}
}
{
/* Do the shift for this dimension. */
sh = *hptr;
- delta = (sh >= 0) ? sh: -sh;
+ if (( sh >= 0 ? sh : -sh ) > len)
+ {
+ delta = len;
+ sh = len;
+ }
+ else
+ delta = (sh >= 0) ? sh: -sh;
+
if (sh > 0)
{
src = &sptr[delta * soffset];