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.



---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives?

Reply via email to