diff options
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/process.c b/src/process.c index bafdca9bd63..911a30bc808 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -136,7 +136,7 @@ extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *, | |||
| 136 | /* Work around GCC 4.7.0 bug with strict overflow checking; see | 136 | /* Work around GCC 4.7.0 bug with strict overflow checking; see |
| 137 | <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>. | 137 | <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52904>. |
| 138 | These lines can be removed once the GCC bug is fixed. */ | 138 | These lines can be removed once the GCC bug is fixed. */ |
| 139 | #if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__ | 139 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) |
| 140 | # pragma GCC diagnostic ignored "-Wstrict-overflow" | 140 | # pragma GCC diagnostic ignored "-Wstrict-overflow" |
| 141 | #endif | 141 | #endif |
| 142 | 142 | ||
| @@ -1804,7 +1804,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) | |||
| 1804 | /* Back in the parent process. */ | 1804 | /* Back in the parent process. */ |
| 1805 | 1805 | ||
| 1806 | XPROCESS (process)->pid = pid; | 1806 | XPROCESS (process)->pid = pid; |
| 1807 | if (0 <= pid) | 1807 | if (pid >= 0) |
| 1808 | XPROCESS (process)->alive = 1; | 1808 | XPROCESS (process)->alive = 1; |
| 1809 | 1809 | ||
| 1810 | /* Stop blocking signals in the parent. */ | 1810 | /* Stop blocking signals in the parent. */ |
| @@ -2155,7 +2155,7 @@ Returns nil upon error setting address, ADDRESS otherwise. */) | |||
| 2155 | channel = XPROCESS (process)->infd; | 2155 | channel = XPROCESS (process)->infd; |
| 2156 | 2156 | ||
| 2157 | len = get_lisp_to_sockaddr_size (address, &family); | 2157 | len = get_lisp_to_sockaddr_size (address, &family); |
| 2158 | if (datagram_address[channel].len != len) | 2158 | if (len == 0 || datagram_address[channel].len != len) |
| 2159 | return Qnil; | 2159 | return Qnil; |
| 2160 | conv_lisp_to_sockaddr (family, address, datagram_address[channel].sa, len); | 2160 | conv_lisp_to_sockaddr (family, address, datagram_address[channel].sa, len); |
| 2161 | return address; | 2161 | return address; |
| @@ -3269,7 +3269,8 @@ usage: (make-network-process &rest ARGS) */) | |||
| 3269 | { | 3269 | { |
| 3270 | int rfamily, rlen; | 3270 | int rfamily, rlen; |
| 3271 | rlen = get_lisp_to_sockaddr_size (remote, &rfamily); | 3271 | rlen = get_lisp_to_sockaddr_size (remote, &rfamily); |
| 3272 | if (rfamily == lres->ai_family && rlen == lres->ai_addrlen) | 3272 | if (rlen != 0 && rfamily == lres->ai_family |
| 3273 | && rlen == lres->ai_addrlen) | ||
| 3273 | conv_lisp_to_sockaddr (rfamily, remote, | 3274 | conv_lisp_to_sockaddr (rfamily, remote, |
| 3274 | datagram_address[s].sa, rlen); | 3275 | datagram_address[s].sa, rlen); |
| 3275 | } | 3276 | } |
| @@ -3900,7 +3901,7 @@ Return non-nil if we received any output before the timeout expired. */) | |||
| 3900 | { | 3901 | { |
| 3901 | if (INTEGERP (seconds)) | 3902 | if (INTEGERP (seconds)) |
| 3902 | { | 3903 | { |
| 3903 | if (0 < XINT (seconds)) | 3904 | if (XINT (seconds) > 0) |
| 3904 | { | 3905 | { |
| 3905 | secs = XINT (seconds); | 3906 | secs = XINT (seconds); |
| 3906 | nsecs = 0; | 3907 | nsecs = 0; |
| @@ -3908,7 +3909,7 @@ Return non-nil if we received any output before the timeout expired. */) | |||
| 3908 | } | 3909 | } |
| 3909 | else if (FLOATP (seconds)) | 3910 | else if (FLOATP (seconds)) |
| 3910 | { | 3911 | { |
| 3911 | if (0 < XFLOAT_DATA (seconds)) | 3912 | if (XFLOAT_DATA (seconds) > 0) |
| 3912 | { | 3913 | { |
| 3913 | EMACS_TIME t = EMACS_TIME_FROM_DOUBLE (XFLOAT_DATA (seconds)); | 3914 | EMACS_TIME t = EMACS_TIME_FROM_DOUBLE (XFLOAT_DATA (seconds)); |
| 3914 | secs = min (EMACS_SECS (t), WAIT_READING_MAX); | 3915 | secs = min (EMACS_SECS (t), WAIT_READING_MAX); |
| @@ -4240,7 +4241,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4240 | 4241 | ||
| 4241 | /* Since we may need to wait several times, | 4242 | /* Since we may need to wait several times, |
| 4242 | compute the absolute time to return at. */ | 4243 | compute the absolute time to return at. */ |
| 4243 | if (time_limit || 0 < nsecs) | 4244 | if (time_limit || nsecs > 0) |
| 4244 | { | 4245 | { |
| 4245 | timeout = make_emacs_time (time_limit, nsecs); | 4246 | timeout = make_emacs_time (time_limit, nsecs); |
| 4246 | end_time = add_emacs_time (current_emacs_time (), timeout); | 4247 | end_time = add_emacs_time (current_emacs_time (), timeout); |
| @@ -4272,7 +4273,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4272 | 4273 | ||
| 4273 | timeout = make_emacs_time (0, 0); | 4274 | timeout = make_emacs_time (0, 0); |
| 4274 | } | 4275 | } |
| 4275 | else if (time_limit || 0 < nsecs) | 4276 | else if (time_limit || nsecs > 0) |
| 4276 | { | 4277 | { |
| 4277 | EMACS_TIME now = current_emacs_time (); | 4278 | EMACS_TIME now = current_emacs_time (); |
| 4278 | if (EMACS_TIME_LE (end_time, now)) | 4279 | if (EMACS_TIME_LE (end_time, now)) |
| @@ -4324,7 +4325,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4324 | break; | 4325 | break; |
| 4325 | 4326 | ||
| 4326 | /* A negative timeout means do not wait at all. */ | 4327 | /* A negative timeout means do not wait at all. */ |
| 4327 | if (0 <= nsecs) | 4328 | if (nsecs >= 0) |
| 4328 | { | 4329 | { |
| 4329 | if (EMACS_TIME_VALID_P (timer_delay)) | 4330 | if (EMACS_TIME_VALID_P (timer_delay)) |
| 4330 | { | 4331 | { |
| @@ -4406,7 +4407,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 4406 | if (nread == 0) | 4407 | if (nread == 0) |
| 4407 | break; | 4408 | break; |
| 4408 | 4409 | ||
| 4409 | if (0 < nread) | 4410 | if (nread > 0) |
| 4410 | { | 4411 | { |
| 4411 | total_nread += nread; | 4412 | total_nread += nread; |
| 4412 | got_some_input = 1; | 4413 | got_some_input = 1; |
| @@ -4947,7 +4948,7 @@ read_process_output (Lisp_Object proc, register int channel) | |||
| 4947 | else | 4948 | else |
| 4948 | #endif | 4949 | #endif |
| 4949 | { | 4950 | { |
| 4950 | bool buffered = 0 <= proc_buffered_char[channel]; | 4951 | bool buffered = proc_buffered_char[channel] >= 0; |
| 4951 | if (buffered) | 4952 | if (buffered) |
| 4952 | { | 4953 | { |
| 4953 | chars[carryover] = proc_buffered_char[channel]; | 4954 | chars[carryover] = proc_buffered_char[channel]; |
| @@ -5454,7 +5455,7 @@ send_process (Lisp_Object proc, const char *buf, ptrdiff_t len, | |||
| 5454 | rv = sendto (outfd, cur_buf, cur_len, | 5455 | rv = sendto (outfd, cur_buf, cur_len, |
| 5455 | 0, datagram_address[outfd].sa, | 5456 | 0, datagram_address[outfd].sa, |
| 5456 | datagram_address[outfd].len); | 5457 | datagram_address[outfd].len); |
| 5457 | if (0 <= rv) | 5458 | if (rv >= 0) |
| 5458 | written = rv; | 5459 | written = rv; |
| 5459 | else if (errno == EMSGSIZE) | 5460 | else if (errno == EMSGSIZE) |
| 5460 | report_file_error ("sending datagram", Fcons (proc, Qnil)); | 5461 | report_file_error ("sending datagram", Fcons (proc, Qnil)); |
| @@ -6577,7 +6578,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 6577 | time_limit = TYPE_MAXIMUM (time_t); | 6578 | time_limit = TYPE_MAXIMUM (time_t); |
| 6578 | 6579 | ||
| 6579 | /* What does time_limit really mean? */ | 6580 | /* What does time_limit really mean? */ |
| 6580 | if (time_limit || 0 < nsecs) | 6581 | if (time_limit || nsecs > 0) |
| 6581 | { | 6582 | { |
| 6582 | timeout = make_emacs_time (time_limit, nsecs); | 6583 | timeout = make_emacs_time (time_limit, nsecs); |
| 6583 | end_time = add_emacs_time (current_emacs_time (), timeout); | 6584 | end_time = add_emacs_time (current_emacs_time (), timeout); |
| @@ -6615,7 +6616,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 6615 | 6616 | ||
| 6616 | timeout = make_emacs_time (0, 0); | 6617 | timeout = make_emacs_time (0, 0); |
| 6617 | } | 6618 | } |
| 6618 | else if (time_limit || 0 < nsecs) | 6619 | else if (time_limit || nsecs > 0) |
| 6619 | { | 6620 | { |
| 6620 | EMACS_TIME now = current_emacs_time (); | 6621 | EMACS_TIME now = current_emacs_time (); |
| 6621 | if (EMACS_TIME_LE (end_time, now)) | 6622 | if (EMACS_TIME_LE (end_time, now)) |
| @@ -6653,7 +6654,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, | |||
| 6653 | && requeued_events_pending_p ()) | 6654 | && requeued_events_pending_p ()) |
| 6654 | break; | 6655 | break; |
| 6655 | 6656 | ||
| 6656 | if (EMACS_TIME_VALID_P (timer_delay) && 0 <= nsecs) | 6657 | if (EMACS_TIME_VALID_P (timer_delay) && nsecs >= 0) |
| 6657 | { | 6658 | { |
| 6658 | if (EMACS_TIME_LT (timer_delay, timeout)) | 6659 | if (EMACS_TIME_LT (timer_delay, timeout)) |
| 6659 | { | 6660 | { |