seems like it should be..
bool chk = true;
for(o = 0; o < five; o++) //five is a placeholder for a constant you would define somewhere
if(board[r++][c++] != v) //assuming a diagonal is r+1 and c+1????? I don't get +4?
chk = false;
return chk;
I guess I don't get the weird C values. I know you said 8x5 but 5 iterations of +4 is still not a line inside that, its out of bounds which wraps around to a strange location.
why it does not end? Your code will end after 5 iterations. If you have an infinite loop, this is not where the problem lies.