lib: Handle a special case with str_to_list()
The current implementation can return an extra result at the end when the string ends with a space. Fix this by adding a special case. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
+3
-1
@@ -236,12 +236,14 @@ const char **str_to_list(const char *instr)
|
||||
return NULL;
|
||||
|
||||
/* count the number of space-separated strings */
|
||||
for (count = *str != '\0', p = str; *p; p++) {
|
||||
for (count = 0, p = str; *p; p++) {
|
||||
if (*p == ' ') {
|
||||
count++;
|
||||
*p = '\0';
|
||||
}
|
||||
}
|
||||
if (p != str && p[-1])
|
||||
count++;
|
||||
|
||||
/* allocate the pointer array, allowing for a NULL terminator */
|
||||
ptr = calloc(count + 1, sizeof(char *));
|
||||
|
||||
+1
-3
@@ -342,9 +342,7 @@ static int test_str_to_list(struct unit_test_state *uts)
|
||||
ut_asserteq_str("space", ptr[3]);
|
||||
ut_assertnonnull(ptr[4]);
|
||||
ut_asserteq_str("", ptr[4]);
|
||||
ut_assertnonnull(ptr[5]);
|
||||
ut_asserteq_str("", ptr[5]);
|
||||
ut_assertnull(ptr[6]);
|
||||
ut_assertnull(ptr[5]);
|
||||
str_free_list(ptr);
|
||||
ut_assertok(ut_check_delta(start));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user