From 0a3cc64d4c8050758482f68c48482e6e375c4ffa Mon Sep 17 00:00:00 2001
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Date: Tue, 31 Mar 2015 22:44:25 +0200
Subject: libc: Fix page-size in getifaddrs()

TODO: this could need a cleanup..

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
 libc/inet/ifaddrs.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

(limited to 'libc')

diff --git a/libc/inet/ifaddrs.c b/libc/inet/ifaddrs.c
index 6d9ee8903..0c9310651 100644
--- a/libc/inet/ifaddrs.c
+++ b/libc/inet/ifaddrs.c
@@ -115,7 +115,8 @@ __netlink_request (struct netlink_handle *h, int type)
 {
   struct netlink_res *nlm_next;
   struct netlink_res **new_nlm_list;
-  static volatile size_t buf_size = 4096;
+  static volatile size_t buf_size = 0;
+  size_t this_buf_size;
   char *buf;
   struct sockaddr_nl nladdr;
   struct nlmsghdr *nlmh;
@@ -126,7 +127,15 @@ __netlink_request (struct netlink_handle *h, int type)
   if (__netlink_sendreq (h, type) < 0)
     return -1;
 
-  size_t this_buf_size = buf_size;
+  if (buf_size)
+	  this_buf_size = buf_size;
+  else {
+#ifdef PAGE_SIZE
+	  this_buf_size = PAGE_SIZE;
+#else
+	  this_buf_size = __pagesize;
+#endif
+  }
   if (__libc_use_alloca (this_buf_size))
     buf = alloca (this_buf_size);
   else
-- 
cgit v1.2.3