소스 검색

libc: Fix page-size in getifaddrs()

TODO: this could need a cleanup..

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Bernhard Reutner-Fischer 9 년 전
부모
커밋
0a3cc64d4c
1개의 변경된 파일11개의 추가작업 그리고 2개의 파일을 삭제
  1. 11 2
      libc/inet/ifaddrs.c

+ 11 - 2
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