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
|
## Substrings are separated by the string `sep`. This is a wrapper around the
|
||||||
## `split iterator <#split.i,string,string>`_.
|
## `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))
|
accumulateResult(split(s, sep, maxsplit))
|
||||||
|
|
||||||
proc rsplit*(s: string, seps: set[char] = Whitespace,
|
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