fix index out of range bug