diff --git a/grid.c b/grid.c
index 36cde074..579eb966 100644
--- a/grid.c
+++ b/grid.c
@@ -368,11 +368,8 @@ grid_clear_lines(struct grid *gd, u_int py, u_int ny)
 	for (yy = py; yy < py + ny; yy++) {
 		gl = &gd->linedata[yy];
 		free(gl->celldata);
-		memset(gl, 0, sizeof *gl);
-
 		free(gl->extddata);
-		gl->extddata = NULL;
-		gl->extdsize = 0;
+		memset(gl, 0, sizeof *gl);
 	}
 }
 
diff --git a/options-table.c b/options-table.c
index bd49a9c8..054b2700 100644
--- a/options-table.c
+++ b/options-table.c
@@ -197,7 +197,7 @@ const struct options_table_entry options_table[] = {
 	{ .name = "display-time",
 	  .type = OPTIONS_TABLE_NUMBER,
 	  .scope = OPTIONS_TABLE_SESSION,
-	  .minimum = 1,
+	  .minimum = 0,
 	  .maximum = INT_MAX,
 	  .default_num = 750
 	},
diff --git a/server.c b/server.c
index 052ca4d9..ddc59c0d 100644
--- a/server.c
+++ b/server.c
@@ -176,8 +176,8 @@ server_start(struct event_base *base, int lockfd, char *lockfile)
 		tty_create_log();
 
 #ifdef __OpenBSD__
-	if (pledge("stdio rpath wpath cpath fattr unix recvfd proc exec tty "
-	    "ps", NULL) != 0)
+	if (pledge("stdio rpath wpath cpath fattr unix getpw recvfd proc exec "
+	    "tty ps", NULL) != 0)
 		fatal("pledge failed");
 #endif
 
diff --git a/status.c b/status.c
index cbba2ead..d05376c0 100644
--- a/status.c
+++ b/status.c
@@ -574,13 +574,15 @@ status_message_set(struct client *c, const char *fmt, ...)
 	}
 
 	delay = options_get_number(c->session->options, "display-time");
-	tv.tv_sec = delay / 1000;
-	tv.tv_usec = (delay % 1000) * 1000L;
+	if (delay > 0) {
+		tv.tv_sec = delay / 1000;
+		tv.tv_usec = (delay % 1000) * 1000L;
 
-	if (event_initialized(&c->message_timer))
-		evtimer_del(&c->message_timer);
-	evtimer_set(&c->message_timer, status_message_callback, c);
-	evtimer_add(&c->message_timer, &tv);
+		if (event_initialized(&c->message_timer))
+			evtimer_del(&c->message_timer);
+		evtimer_set(&c->message_timer, status_message_callback, c);
+		evtimer_add(&c->message_timer, &tv);
+	}
 
 	c->tty.flags |= (TTY_NOCURSOR|TTY_FREEZE);
 	c->flags |= CLIENT_STATUS;
diff --git a/tmux.1 b/tmux.1
index 0a193bfb..118839e0 100644
--- a/tmux.1
+++ b/tmux.1
@@ -2561,6 +2561,7 @@ command appear.
 .It Ic display-time Ar time
 Set the amount of time for which status line messages and other on-screen
 indicators are displayed.
+If set to 0, messages and indicators are displayed until a key is pressed.
 .Ar time
 is in milliseconds.
 .It Ic history-limit Ar lines
diff --git a/tmux.c b/tmux.c
index 15faadf8..cd0595dd 100644
--- a/tmux.c
+++ b/tmux.c
@@ -261,8 +261,8 @@ main(int argc, char **argv)
 		usage();
 
 #ifdef __OpenBSD__
-	if (pledge("stdio rpath wpath cpath flock fattr unix sendfd recvfd "
-	    "proc exec tty ps", NULL) != 0)
+	if (pledge("stdio rpath wpath cpath flock fattr unix getpw sendfd "
+	    "recvfd proc exec tty ps", NULL) != 0)
 		err(1, "pledge");
 #endif