aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2015-07-24 23:40:31 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-07-25 00:55:19 +0200
commit5b9b15333670e49e708c71baaa824943bc1796ba (patch)
tree84956e9e0a7d9b739bf6395d4e0b13829ba86078
parente57b57e47266c1ac2fded9e84e8bf59cc8fadd7f (diff)
downloadvis-5b9b15333670e49e708c71baaa824943bc1796ba.tar.gz
vis-5b9b15333670e49e708c71baaa824943bc1796ba.tar.xz
text: handle marks set to 0 and text_size(...)
-rw-r--r--text.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/text.c b/text.c
index df8eb21..9a1bd42 100644
--- a/text.c
+++ b/text.c
@@ -1434,6 +1434,10 @@ size_t text_lineno_by_pos(Text *txt, size_t pos) {
}
Mark text_mark_set(Text *txt, size_t pos) {
+ if (pos == 0)
+ return (Mark)&txt->begin;
+ if (pos == txt->size)
+ return (Mark)&txt->end;
Location loc = piece_get_extern(txt, pos);
if (!loc.piece)
return NULL;
@@ -1445,6 +1449,10 @@ size_t text_mark_get(Text *txt, Mark mark) {
if (!mark)
return EPOS;
+ if (mark == (Mark)&txt->begin)
+ return 0;
+ if (mark == (Mark)&txt->end)
+ return txt->size;
for (Piece *p = txt->begin.next; p->next; p = p->next) {
if (p->data <= mark && mark < p->data + p->len)