fix(strutil): clamp Substr stop index to avoid out-of-range panic
Substr panicked with a slice-bounds error when a negative length trimmed more runes than remained after pos, because stopIdx (strLn + length) could fall before pos. Clamp stopIdx to pos so an over-long negative trim returns an empty string, matching the existing pos >= strLn guard.
This commit is contained in:
1 parent
1ffc0f390b
commit
650669002f
3 files changed
+76
No files matched your search
@@ -166,6 +166,12 @@ func Substr(s string, pos, length int) string {
|
||||
stopIdx = strLn + length
|
||||
}
|
||||
|
||||
// A negative length can move stopIdx before pos when it trims more than
|
||||
// the remaining substring; clamp to pos to avoid an out-of-range slice.
|
||||
if stopIdx < pos {
|
||||
stopIdx = pos
|
||||
}
|
||||
|
||||
return string(runes[pos:stopIdx])
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user