diff options
| -rw-r--r-- | libc/inet/ifaddrs.c | 13 | 
1 files changed, 11 insertions, 2 deletions
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  | 
