diff options
| -rw-r--r-- | text.c | 5 | ||||
| -rw-r--r-- | text.h | 8 | ||||
| -rw-r--r-- | vis.c | 2 |
3 files changed, 9 insertions, 6 deletions
@@ -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; @@ -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 @@ -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; |
