diff options
author | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-11-08 17:44:18 +0300 |
---|---|---|
committer | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-11-08 17:44:18 +0300 |
commit | 6b35ae81a38573dcc42a944ebd8c2e6317cf5ad3 (patch) | |
tree | d9118b0db831d878db8acd33f7a69a0dbbf96849 /src/parcini.c | |
parent | dc6d7befaa0de08814d4aaf85838faaf3fec8671 (diff) | |
download | parcini-master.tar.gz parcini-master.zip |
on sections shorter than 3 chars.
Diffstat (limited to 'src/parcini.c')
-rw-r--r-- | src/parcini.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/parcini.c b/src/parcini.c index 8434685..89a9356 100644 --- a/src/parcini.c +++ b/src/parcini.c @@ -56,16 +56,13 @@ lskip(char **start) static char * slicecpy(char *start, char *end, char **dst, size_t *dstn) { - size_t srcn = end - start + 1; - if (*dst == NULL) { - *dst = malloc(srcn + 1); - } - if (*dstn < srcn) { - char *newptr = realloc(*dst, srcn + 1); + size_t srcn = end - start; + if (*dstn < srcn + 1) { + *dstn = srcn + 1; + char *newptr = realloc(*dst, *dstn); if (newptr == NULL) { return NULL; } - *dstn = srcn + 1; *dst = newptr; } for (size_t i = 0; i < srcn; i++) { @@ -132,7 +129,7 @@ parcini_parse_next_line(parcini_t *parser, struct parcini_line *parsed) if (cmnt && cmnt < end) { return PARCINI_SECTION_PARSE_ERROR; } - if (!slicecpy(start + 1, end - 1, &parser->last_section, + if (!slicecpy(start + 1, end, &parser->last_section, &parser->last_section_n)) { return PARCINI_MEMORY_ERROR; } @@ -231,7 +228,7 @@ parcini_init(FILE *stream) if (parser != NULL) { parser->stream = stream; parser->last_section = strdup(""); - parser->last_section_n = 2; + parser->last_section_n = 1; } return parser; |