Index: include/arch/unix/apr_arch_poll_private.h
===================================================================
--- include/arch/unix/apr_arch_poll_private.h	(revision 896725)
+++ include/arch/unix/apr_arch_poll_private.h	(working copy)
@@ -115,6 +115,7 @@
     apr_uint32_t flags;
     /* Pipe descriptors used for wakeup */
     apr_file_t *wakeup_pipe[2];
+    apr_pollfd_t wakeup_pfd;
     apr_pollset_private_t *p;
     apr_pollset_provider_t *provider;
 };
Index: poll/unix/pollset.c
===================================================================
--- poll/unix/pollset.c	(revision 896725)
+++ poll/unix/pollset.c	(working copy)
@@ -39,18 +39,18 @@
 static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
 {
     apr_status_t rv;
-    apr_pollfd_t fd;
 
     if ((rv = file_socket_pipe_create(&pollset->wakeup_pipe[0],
                                       &pollset->wakeup_pipe[1],
                                       pollset->pool)) != APR_SUCCESS)
         return rv;
-    fd.reqevents = APR_POLLIN;
-    fd.desc_type = APR_POLL_FILE;
-    fd.desc.f = pollset->wakeup_pipe[0];
-    /* Add the pipe to the pollset
-     */
-    return apr_pollset_add(pollset, &fd);
+
+    pollset->wakeup_pfd.p = pollset->pool;
+    pollset->wakeup_pfd.reqevents = APR_POLLIN;
+    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
+    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
+
+    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
 }
 
 static apr_status_t close_wakeup_pipe(apr_pollset_t *pollset)
@@ -91,16 +91,17 @@
 static apr_status_t create_wakeup_pipe(apr_pollset_t *pollset)
 {
     apr_status_t rv;
-    apr_pollfd_t fd;
 
     if ((rv = apr_file_pipe_create(&pollset->wakeup_pipe[0],
                                    &pollset->wakeup_pipe[1],
                                    pollset->pool)) != APR_SUCCESS)
         return rv;
-    fd.reqevents = APR_POLLIN;
-    fd.desc_type = APR_POLL_FILE;
-    fd.desc.f = pollset->wakeup_pipe[0];
 
+    pollset->wakeup_pfd.p = pollset->pool;
+    pollset->wakeup_pfd.reqevents = APR_POLLIN;
+    pollset->wakeup_pfd.desc_type = APR_POLL_FILE;
+    pollset->wakeup_pfd.desc.f = pollset->wakeup_pipe[0];
+
     {
         int flags;
 
@@ -124,13 +125,13 @@
 
     /* Add the pipe to the pollset
      */
-    return apr_pollset_add(pollset, &fd);
+    return apr_pollset_add(pollset, &pollset->wakeup_pfd);
 }
 
 static apr_status_t close_wakeup_pipe(apr_pollset_t *pollset)
 {
-    apr_status_t rv0;
-    apr_status_t rv1;
+    apr_status_t rv0 = APR_SUCCESS;
+    apr_status_t rv1 = APR_SUCCESS;
 
     /* Close both sides of the wakeup pipe */
     if (pollset->wakeup_pipe[0]) {
@@ -155,7 +156,7 @@
 
     while (apr_file_read(pollset->wakeup_pipe[0], rb, &nr) == APR_SUCCESS) {
         /* Although we write just one byte to the other end of the pipe
-         * during wakeup, multiple treads could call the wakeup.
+         * during wakeup, multiple threads could call the wakeup.
          * So simply drain out from the input side of the pipe all
          * the data.
          */
