On these two lines:
times[0].tv_sec = setAccessTime ? accessTime / 1000 : info.st_atimespec.tv_sec;
times[1].tv_sec = setModificationTime ? modificationTime / 1000 : info.st_mtimespec.tv_sec;
tv_sec is a __darwin_time_t which is a long. accessTime and modificationTime are int64 or long long.
I think this is caught with: -Wshorten-64-to-32
