Guard against calling split with an empty string as a separator. Fixes #5119
This commit is contained in:
parent
2bb49136de
commit
40d034b7e3
2 changed files with 24 additions and 0 deletions
|
|
@ -808,6 +808,11 @@ proc split*(s: string, sep: string, maxsplit: int = -1): seq[string] {.noSideEff
|
|||
##
|
||||
## Substrings are separated by the string `sep`. This is a wrapper around the
|
||||
## `split iterator <#split.i,string,string>`_.
|
||||
##
|
||||
## If `sep` is an empty string, `ValueError` is raised.
|
||||
if sep.len == 0:
|
||||
raise newException(ValueError, "invalid separator: empty string not allowed")
|
||||
|
||||
accumulateResult(split(s, sep, maxsplit))
|
||||
|
||||
proc rsplit*(s: string, seps: set[char] = Whitespace,
|
||||
|
|
|
|||
19
tests/stdlib/tsplit2.nim
Normal file
19
tests/stdlib/tsplit2.nim
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
discard """
|
||||
file: "tsplit2.nim"
|
||||
output: "true"
|
||||
"""
|
||||
import strutils
|
||||
|
||||
var s = ""
|
||||
for w in split("|abc|xy|z", {'|'}):
|
||||
s.add("#")
|
||||
s.add(w)
|
||||
|
||||
try:
|
||||
discard "hello".split("")
|
||||
echo "false"
|
||||
except ValueError:
|
||||
echo "true"
|
||||
|
||||
#OUT true
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue