diff options
Diffstat (limited to 'src/sh_string.c')
-rw-r--r-- | src/sh_string.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/sh_string.c b/src/sh_string.c index a898dd9..58e8c06 100644 --- a/src/sh_string.c +++ b/src/sh_string.c @@ -643,7 +643,8 @@ sh_string * sh_string_replace(const sh_string * s, { len = (size_t) tlen; - if (tlen > 0 && r->siz > (r->len + len)) + if (tlen > 0 && r->siz > (r->len + len) && + &(s->str[ovector[last]]) ) { memcpy(p, &(s->str[ovector[last]]), (size_t)len); p += len; @@ -674,7 +675,8 @@ sh_string * sh_string_replace(const sh_string * s, if (tlen > 0) { len = (size_t)tlen; - if (r->siz >= (r->len + len)) { + if (r->siz >= (r->len + len) && + &(s->str[ovector[2*i -1]]) ) { memcpy(p, &(s->str[ovector[2*i -1]]), (size_t)len); p += (len - 1); r->len += (len - 1); |