Lines 59-81
fgetwln(FILE * __restrict fp, size_t *le
Link Here
|
59 |
|
59 |
|
60 |
len = 0; |
60 |
len = 0; |
61 |
while ((wc = __fgetwc_unlock(fp)) != WEOF) { |
61 |
while ((wc = __fgetwc_unlock(fp)) != WEOF) { |
62 |
#define GROW 512 |
62 |
#define GROW 512 |
63 |
if (len >= fp->_lb._size / sizeof(wchar_t) && |
63 |
if (len >= fp->_lb._size / sizeof(wchar_t) && |
64 |
__slbexpand(fp, len + GROW)) |
64 |
__slbexpand(fp, len + GROW)) |
65 |
goto error; |
65 |
goto error; |
66 |
*((wchar_t *)fp->_lb._base + len++) = wc; |
66 |
*((wchar_t *)fp->_lb._base + len++) = wc; |
67 |
if (wc == L'\n') |
67 |
if (wc == L'\n') |
68 |
break; |
68 |
break; |
69 |
} |
69 |
} |
70 |
if (len == 0) |
70 |
if (len == 0 || fp->_flags & __SERR) |
71 |
goto error; |
71 |
goto error; |
72 |
|
72 |
|
73 |
FUNLOCKFILE(fp); |
73 |
FUNLOCKFILE(fp); |
74 |
*lenp = len; |
74 |
*lenp = len; |
75 |
return (wchar_t *)fp->_lb._base; |
75 |
return (wchar_t *)fp->_lb._base; |
76 |
|
76 |
|
77 |
error: |
77 |
error: |
78 |
FUNLOCKFILE(fp); |
78 |
FUNLOCKFILE(fp); |
79 |
*lenp = 0; |
79 |
*lenp = 0; |
80 |
return NULL; |
80 |
return NULL; |
81 |
} |
81 |
} |