Include empty strings in oc_str8_split

This commit is contained in:
Ben Visness 2023-09-28 20:28:51 -05:00
parent 8d915f03bf
commit caed72856e
1 changed files with 5 additions and 12 deletions

View File

@ -196,23 +196,16 @@ oc_str8_list oc_str8_split(oc_arena* arena, oc_str8 str, oc_str8_list separators
} }
if(foundSep) if(foundSep)
{ {
//NOTE(martin): we found a separator. If the start of the current substring is != ptr, oc_str8 sub = oc_str8_from_buffer(ptr - subStart, subStart);
// the current substring is not empty and we emit the substring oc_str8_list_push(arena, &list, sub);
if(ptr != subStart)
{
oc_str8 sub = oc_str8_from_buffer(ptr - subStart, subStart);
oc_str8_list_push(arena, &list, sub);
}
ptr += foundSep->len - 1; //NOTE(martin): ptr is incremented at the end of the loop ptr += foundSep->len - 1; //NOTE(martin): ptr is incremented at the end of the loop
subStart = ptr + 1; subStart = ptr + 1;
} }
} }
//NOTE(martin): emit the last substring //NOTE(martin): emit the last substring
if(ptr != subStart) oc_str8 sub = oc_str8_from_buffer(ptr - subStart, subStart);
{ oc_str8_list_push(arena, &list, sub);
oc_str8 sub = oc_str8_from_buffer(ptr - subStart, subStart);
oc_str8_list_push(arena, &list, sub);
}
return (list); return (list);
} }