|
46 | 46 | #include "libc/thread/thread.h"
|
47 | 47 | #include "libc/thread/tls.h"
|
48 | 48 |
|
49 |
| -#define OPEN_MAX 16 |
50 |
| - |
51 | 49 | #ifdef __x86_64__
|
52 | 50 | __static_yoink("_init_fds");
|
53 | 51 | #endif
|
54 | 52 |
|
55 | 53 | struct Fds g_fds;
|
56 |
| -static struct Fd g_fds_static[OPEN_MAX]; |
57 | 54 |
|
58 | 55 | static bool TokAtoi(const char **str, long *res) {
|
59 | 56 | int c, d;
|
@@ -92,15 +89,9 @@ textstartup void __init_fds(int argc, char **argv, char **envp) {
|
92 | 89 | fds = &g_fds;
|
93 | 90 | fds->n = 4;
|
94 | 91 | atomic_store_explicit(&fds->f, 3, memory_order_relaxed);
|
95 |
| - if (_weaken(_extend)) { |
96 |
| - fds->p = fds->e = (void *)kMemtrackFdsStart; |
97 |
| - fds->e = |
98 |
| - _weaken(_extend)(fds->p, fds->n * sizeof(*fds->p), fds->e, MAP_PRIVATE, |
99 |
| - kMemtrackFdsStart + kMemtrackFdsSize); |
100 |
| - } else { |
101 |
| - fds->p = g_fds_static; |
102 |
| - fds->e = g_fds_static + OPEN_MAX; |
103 |
| - } |
| 92 | + fds->p = fds->e = (void *)kMemtrackFdsStart; |
| 93 | + fds->e = _extend(fds->p, fds->n * sizeof(*fds->p), fds->e, MAP_PRIVATE, |
| 94 | + kMemtrackFdsStart + kMemtrackFdsSize); |
104 | 95 |
|
105 | 96 | // inherit standard i/o file descriptors
|
106 | 97 | if (IsMetal()) {
|
@@ -154,8 +145,7 @@ textstartup void __init_fds(int argc, char **argv, char **envp) {
|
154 | 145 | break;
|
155 | 146 | if (!TokAtoi(&fdspec, &protocol))
|
156 | 147 | break;
|
157 |
| - if (_weaken(__ensurefds_unlocked)) |
158 |
| - _weaken(__ensurefds_unlocked)(fd); |
| 148 | + __ensurefds_unlocked(fd); |
159 | 149 | struct Fd *f = fds->p + fd;
|
160 | 150 | if (f->handle && f->handle != -1 && f->handle != handle) {
|
161 | 151 | CloseHandle(f->handle);
|
|
0 commit comments