diff options
author | Thomas White <taw@bitwiz.org.uk> | 2016-08-12 22:55:51 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2016-08-12 22:55:51 +0200 |
commit | f7294afa23b9b2817e741a047ce27e0881915bed (patch) | |
tree | edb91aed8522f25b4bff574c328b32dbfab5e7f2 | |
parent | 2df04c613b0e5f5f47b7f1c1bbeb460802718c21 (diff) |
Fix scblock_delete_text()
-rw-r--r-- | src/sc_parse.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/sc_parse.c b/src/sc_parse.c index 8bc6578..659f0a3 100644 --- a/src/sc_parse.c +++ b/src/sc_parse.c @@ -633,11 +633,13 @@ void sc_insert_block(SCBlock *b1, int o1, SCBlock *ins) void scblock_delete_text(SCBlock *b, size_t o1, size_t o2) { - if ( o1 >= o2 ) { - fprintf(stderr, "Backwards delete!\n"); + size_t len = strlen(b->contents); + if ( (o1 >= o2) || (o1 > len) || (o2 > len) ) { + fprintf(stderr, "Invalid delete: %i %i %i\n", + (int)o1, (int)o2, (int)len); return; } - memmove(b->contents+o1, b->contents+o2, o2-o1); + memmove(b->contents+o1, b->contents+o2, len-o2+1); } |