Tom Lane wrote:
Bruce Momjian <[EMAIL PROTECTED]> writes:
I also changed all the pid variables to use pid_t.
Good, but ...
! fscanf(pidf, "%u", &pid);
this code will fail rather horribly if sizeof(pid_t) != sizeof(int). Even more to the point, I believe a standalone backend will put the negative of its PID into the file, and the revised code will fail to parse that at all.
I think the safest code would be like
long tmp;
fscanf(pidf, "%ld", &tmp); if (tmp < 0) { tmp = -tmp; // do anything else needed for backend case } pid = (pid_t) tmp;
I deliberately used a signed long for these reasons in the first place.
The number of places we actually need to use this value as a pid is small (3 by my count - in calls to kill() ), and it was cast there to pid_t, I think. I still don't see what's wrong with that.
cheers
andrew
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?
http://archives.postgresql.org