print_resall_header(stderr, gmx::arrayRefFromArray(&header_settings, 1));
}
/* We don't know the current size of rrtp, but simply realloc immediately */
- auto oldArrayEnd = rtpDBEntry->end() - 1;
+ auto oldArrayEnd = rtpDBEntry->end();
while (!feof(in))
{
/* Initialise rtp entry structure */
* The rule in that case is that additional matches
* HAVE to be on adjacent lines!
*/
- bool bSame = true;
+ bool bSame = true;
+ //Advance iterator (like std::advance) without incrementing past end (UB)
+ const auto safeAdvance = [](auto &it, auto n, auto end) {
+ it = end-it > n ? it+n : end;
+ };
/* Continue from current iterator position */
- for (auto nextPos = prevPos + 2; (nextPos < bt[ftype].interactionTypes.end()) && bSame; nextPos += 2)
+ auto nextPos = prevPos;
+ const auto endIter = bt[ftype].interactionTypes.end();
+ safeAdvance(nextPos, 2, endIter);
+ for (; nextPos < endIter && bSame; safeAdvance(nextPos, 2, endIter))
{
bSame = (prevPos->ai() == nextPos->ai() && prevPos->aj() == nextPos->aj() && prevPos->ak() == nextPos->ak() && prevPos->al() == nextPos->al());
if (bSame)
if (bSortMatrix)
{
/* Order the blbnb matrix to optimize memory access */
- std::sort(&(li->blbnb[li->blnr[b]]), &(li->blbnb[li->blnr[b+1]]));
+ std::sort(li->blbnb.begin()+li->blnr[b], li->blbnb.begin()+li->blnr[b+1]);
}
}
}
{
params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+0] = params->nbfp[(i*nt+j)*2+0];
params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+1] = params->nbfp[(i*nt+j)*2+1];
- params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+2] = 0;
- params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+3] = 0;
+ if (c_simdBestPairAlignment > 2)
+ {
+ params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+2] = 0;
+ params->nbfp_aligned[(i*nt+j)*c_simdBestPairAlignment+3] = 0;
+ }
}
}
#endif