aboutsummaryrefslogtreecommitdiff
path: root/text.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-12-22 12:32:33 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-12-22 12:32:33 +0100
commite2f130542be12a22c62744e718f0a5f884fc89d5 (patch)
tree74ee4013dd811f10dcac4c9b81d6376c6a7c7871 /text.c
parent53665d0e550330c331589df4d11de697e3a6ec91 (diff)
downloadvis-e2f130542be12a22c62744e718f0a5f884fc89d5.tar.gz
vis-e2f130542be12a22c62744e718f0a5f884fc89d5.tar.xz
text: change datatype of Mark to uintptr_t
This should avoid undefined pointer comparisons.
Diffstat (limited to 'text.c')
-rw-r--r--text.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/text.c b/text.c
index 1e97a14..ace6b2d 100644
--- a/text.c
+++ b/text.c
@@ -1634,8 +1634,8 @@ Mark text_mark_set(Text *txt, size_t pos) {
return (Mark)&txt->end;
Location loc = piece_get_extern(txt, pos);
if (!loc.piece)
- return NULL;
- return loc.piece->data + loc.off;
+ return (Mark)NULL;
+ return (Mark)(loc.piece->data + loc.off);
}
size_t text_mark_get(Text *txt, Mark mark) {
@@ -1649,8 +1649,10 @@ size_t text_mark_get(Text *txt, Mark mark) {
return txt->size;
for (Piece *p = txt->begin.next; p->next; p = p->next) {
- if (p->data <= mark && mark < p->data + p->len)
- return cur + (mark - p->data);
+ Mark start = (Mark)(p->data);
+ Mark end = start + p->len;
+ if (start <= mark && mark < end)
+ return cur + (mark - start);
cur += p->len;
}