aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-05-03 10:54:02 +0200
committerMarc André Tanner <mat@brain-dump.org>2017-05-03 11:07:05 +0200
commitdc012cb59daa9f5425871ef94e001f4dbdecc5a4 (patch)
tree83389f7d37a2f4319e4b8a1f23fc501100b158fa
parent596e9ac6b361a726f97c390bc272f6c7506d3cb5 (diff)
downloadvis-dc012cb59daa9f5425871ef94e001f4dbdecc5a4.tar.gz
vis-dc012cb59daa9f5425871ef94e001f4dbdecc5a4.tar.xz
text: rename text_sigbus to text_mmaped
Add casts to uintptr_t to avoid unrelated pointer comparisons.
-rw-r--r--text.c5
-rw-r--r--text.h8
-rw-r--r--vis.c2
3 files changed, 9 insertions, 6 deletions
diff --git a/text.c b/text.c
index 0d337c3..291cc3a 100644
--- a/text.c
+++ b/text.c
@@ -1312,10 +1312,11 @@ bool text_modified(Text *txt) {
return txt->saved_revision != txt->history;
}
-bool text_sigbus(Text *txt, const char *addr) {
+bool text_mmaped(Text *txt, const char *ptr) {
+ uintptr_t addr = (uintptr_t)ptr;
for (Block *blk = txt->blocks; blk; blk = blk->next) {
if ((blk->type == MMAP_ORIG || blk->type == MMAP) &&
- blk->data <= addr && addr < blk->data + blk->size)
+ (uintptr_t)(blk->data) <= addr && addr < (uintptr_t)(blk->data + blk->size))
return true;
}
return false;
diff --git a/text.h b/text.h
index 4d4f9bc..d53d1ed 100644
--- a/text.h
+++ b/text.h
@@ -254,9 +254,11 @@ Mark text_mark_set(Text*, size_t pos);
size_t text_mark_get(Text*, Mark);
/** @} */
-/* query whether `addr` is part of a memory mapped region associated with
- * this text instance */
-bool text_sigbus(Text*, const char *addr);
+/**
+ * Check whether ``ptr`` is part of a memory mapped region associated with
+ * this text instance.
+ */
+bool text_mmaped(Text*, const char *ptr);
/**
* @defgroup save
diff --git a/vis.c b/vis.c
index bc488f6..be12efb 100644
--- a/vis.c
+++ b/vis.c
@@ -1274,7 +1274,7 @@ bool vis_signal_handler(Vis *vis, int signum, const siginfo_t *siginfo, const vo
switch (signum) {
case SIGBUS:
for (File *file = vis->files; file; file = file->next) {
- if (text_sigbus(file->text, siginfo->si_addr))
+ if (text_mmaped(file->text, siginfo->si_addr))
file->truncated = true;
}
vis->sigbus = true;