From b92bea5d2a9481de69bb627a7b442a9f58fca43d Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Sun, 24 Mar 2013 19:59:00 -0400 Subject: Use initalization instead of explicit zeroing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before, we would initialize many fields twice: first by filling the structure with zeros, and then a second time with the real values. We can let the compiler do the job for us, avoiding one copy. A downside of this patch is that text gets slightly bigger. This is because all zero() calls are effectively inlined: $ size build/.libs/systemd text data bss dec hex filename before 897737 107300 2560 1007597 f5fed build/.libs/systemd after 897873 107300 2560 1007733 f6075 build/.libs/systemd … actually less than 1‰. A few asserts that the parameter is not null had to be removed. I don't think this changes much, because first, it is quite unlikely for the assert to fail, and second, an immediate SEGV is almost as good as an assert. --- src/stdio-bridge/stdio-bridge.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/stdio-bridge') diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c index 8667bbf9b6..a5bdb03416 100644 --- a/src/stdio-bridge/stdio-bridge.c +++ b/src/stdio-bridge/stdio-bridge.c @@ -124,7 +124,6 @@ int main(int argc, char *argv[]) { for (;;) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - struct pollfd p[3]; int events_a, events_b, fd; uint64_t timeout_a, timeout_b, t; struct timespec _ts, *ts; @@ -211,15 +210,14 @@ int main(int argc, char *argv[]) { ts = timespec_store(&_ts, t); } - zero(p); - p[0].fd = fd; - p[0].events = events_a; - p[1].fd = STDIN_FILENO; - p[1].events = events_b & POLLIN; - p[2].fd = STDOUT_FILENO; - p[2].events = events_b & POLLOUT; + { + struct pollfd p[3] = { + {.fd = fd, .events = events_a, }, + {.fd = STDIN_FILENO, .events = events_b & POLLIN, }, + {.fd = STDOUT_FILENO, .events = events_b & POLLOUT, }}; - r = ppoll(p, ELEMENTSOF(p), ts, NULL); + r = ppoll(p, ELEMENTSOF(p), ts, NULL); + } if (r < 0) { log_error("ppoll() failed: %m"); goto finish; -- cgit v1.2.3-54-g00ecf