mirror of
https://gitlab.com/80486DX2-66/gists
synced 2024-12-27 05:40:17 +05:30
freadln.*: fix error handling logic
This commit is contained in:
parent
18af3053f3
commit
3638c9eb7c
@ -51,7 +51,8 @@ int freadln(FILE* f, char** output, size_t* length_out) {
|
||||
if ((freadln_length_type) (length + 2) <= (freadln_length_type) length)
|
||||
{
|
||||
errno = ERANGE;
|
||||
freadln_success_epilogue;
|
||||
freadln_epilogue;
|
||||
return freadln_ERROR;
|
||||
} else
|
||||
length++;
|
||||
|
||||
@ -61,14 +62,16 @@ int freadln(FILE* f, char** output, size_t* length_out) {
|
||||
// has already been accumulated.
|
||||
if (temp == NULL) {
|
||||
// keep errno;
|
||||
freadln_success_epilogue;
|
||||
freadln_epilogue;
|
||||
return freadln_ERROR;
|
||||
}
|
||||
|
||||
*output = temp;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
freadln_success_epilogue;
|
||||
freadln_epilogue;
|
||||
return freadln_OK;
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
|
@ -19,11 +19,10 @@ enum freadln_status {
|
||||
freadln_ERROR
|
||||
};
|
||||
|
||||
#define freadln_success_epilogue do { \
|
||||
#define freadln_epilogue do { \
|
||||
(*output)[length] = '\0'; \
|
||||
if (length_out != NULL) \
|
||||
*length_out = length; \
|
||||
return freadln_OK; \
|
||||
} while (0)
|
||||
|
||||
int freadln(FILE* f, char** output, size_t* length_out);
|
||||
|
Loading…
Reference in New Issue
Block a user