summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bstr.c3
-rw-r--r--m_option.c6
2 files changed, 5 insertions, 4 deletions
diff --git a/bstr.c b/bstr.c
index a2a49cc371..219c136d7c 100644
--- a/bstr.c
+++ b/bstr.c
@@ -129,8 +129,7 @@ struct bstr bstr_splice(struct bstr str, int start, int end)
end += str.len;
end = FFMIN(end, str.len);
start = FFMAX(start, 0);
- if (start >= end)
- return (struct bstr){NULL, 0};
+ end = FFMAX(end, start);
str.start += start;
str.len = end - start;
return str;
diff --git a/m_option.c b/m_option.c
index 34b7cd7a99..a7321cb629 100644
--- a/m_option.c
+++ b/m_option.c
@@ -717,11 +717,13 @@ static int parse_str_list(const m_option_t *opt, struct bstr name,
char *ptr = str.start;
n = 0;
- while (str.len) {
+ while (1) {
struct bstr el = get_nextsep(&str, separator, 1);
res[n] = bstrdup0(NULL, el);
- str = bstr_cut(str, 1);
n++;
+ if (!str.len)
+ break;
+ str = bstr_cut(str, 1);
}
res[n] = NULL;
talloc_free(ptr);