aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c31
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 {