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/tty-ask-password-agent/tty-ask-password-agent.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/tty-ask-password-agent') diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 99a626c6c5..3f5706ee3c 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -60,11 +60,11 @@ static int ask_password_plymouth( char ***_passphrases) { int fd = -1, notify = -1; - union sockaddr_union sa; + union sockaddr_union sa = {}; char *packet = NULL; ssize_t k; int r, n; - struct pollfd pollfd[2]; + struct pollfd pollfd[2] = {}; char buffer[LINE_MAX]; size_t p = 0; enum { @@ -91,7 +91,6 @@ static int ask_password_plymouth( goto finish; } - zero(sa); sa.sa.sa_family = AF_UNIX; strncpy(sa.un.sun_path+1, "/org/freedesktop/plymouthd", sizeof(sa.un.sun_path)-1); if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) { @@ -116,7 +115,6 @@ static int ask_password_plymouth( goto finish; } - zero(pollfd); pollfd[POLL_SOCKET].fd = fd; pollfd[POLL_SOCKET].events = POLLIN; pollfd[POLL_INOTIFY].fd = notify; @@ -325,7 +323,7 @@ static int parse_password(const char *filename, char **wall) { union { struct sockaddr sa; struct sockaddr_un un; - } sa; + } sa = {}; size_t packet_length = 0; assert(arg_action == ACTION_QUERY || @@ -410,7 +408,6 @@ static int parse_password(const char *filename, char **wall) { goto finish; } - zero(sa); sa.un.sun_family = AF_UNIX; strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path)); @@ -563,7 +560,7 @@ static int watch_passwords(void) { }; int notify = -1, signal_fd = -1, tty_block_fd = -1; - struct pollfd pollfd[_FD_MAX]; + struct pollfd pollfd[_FD_MAX] = {}; sigset_t mask; int r; @@ -591,7 +588,6 @@ static int watch_passwords(void) { goto finish; } - zero(pollfd); pollfd[FD_INOTIFY].fd = notify; pollfd[FD_INOTIFY].events = POLLIN; pollfd[FD_SIGNAL].fd = signal_fd; -- cgit v1.2.3-54-g00ecf