revise the bug, size_t expression always return postive number