fixes more nil string bugs
This commit is contained in:
parent
b07d1f1dc3
commit
babd31360a
3 changed files with 10 additions and 8 deletions
|
|
@ -1366,9 +1366,11 @@ proc find*(s: string, sub: char, start: Natural = 0, last: Natural = 0): int {.n
|
|||
if sub == s[i]: return i
|
||||
else:
|
||||
when hasCStringBuiltin:
|
||||
let found = c_memchr(s[start].unsafeAddr, sub, last-start+1)
|
||||
if not found.isNil:
|
||||
return cast[ByteAddress](found) -% cast[ByteAddress](s.cstring)
|
||||
let L = last-start+1
|
||||
if L > 0:
|
||||
let found = c_memchr(s[start].unsafeAddr, sub, L)
|
||||
if not found.isNil:
|
||||
return cast[ByteAddress](found) -% cast[ByteAddress](s.cstring)
|
||||
else:
|
||||
for i in start..last:
|
||||
if sub == s[i]: return i
|
||||
|
|
@ -1515,7 +1517,7 @@ proc replace*(s, sub: string, by = ""): string {.noSideEffect,
|
|||
elif subLen == 1:
|
||||
# when the pattern is a single char, we use a faster
|
||||
# char-based search that doesn't need a skip table:
|
||||
var c = sub[0]
|
||||
let c = sub[0]
|
||||
let last = s.high
|
||||
var i = 0
|
||||
while true:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue