From 5bad9afed2189f3716865da42c66133d1f6da218 Mon Sep 17 00:00:00 2001 From: ii14 Date: Thu, 16 Mar 2023 18:13:58 +0100 Subject: build: sanitizers for gcc GCC also supports sanitizers. GCC doesn't support -fsanitize-blacklist option though, so replace .asan-blacklist file with no_sanitize_address function attributes instead. --- src/nvim/event/multiqueue.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index e05084b656..8f8a36eff9 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -245,6 +245,7 @@ static void multiqueue_push(MultiQueue *this, Event event) } static MultiQueueItem *multiqueue_node_data(QUEUE *q) + FUNC_ATTR_NO_SANITIZE_ADDRESS { return QUEUE_DATA(q, MultiQueueItem, node); } -- cgit From 7190dba017e3aac0409c73ff1c954d18858cb3c9 Mon Sep 17 00:00:00 2001 From: ii14 <59243201+ii14@users.noreply.github.com> Date: Thu, 6 Apr 2023 22:39:50 +0200 Subject: refactor: remove use of reserved c++ keywords libnvim couldn't be easily used in C++ due to the use of reserved keywords. Additionally, add explicit casts to *alloc function calls used in inline functions, as C++ doesn't allow implicit casts from void pointers. --- src/nvim/event/multiqueue.c | 78 ++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 39 deletions(-) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index 8f8a36eff9..0096d0e11e 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -112,13 +112,13 @@ static MultiQueue *multiqueue_new(MultiQueue *parent, PutCallback put_cb, void * return rv; } -void multiqueue_free(MultiQueue *this) +void multiqueue_free(MultiQueue *self) { - assert(this); + assert(self); QUEUE *q; - QUEUE_FOREACH(q, &this->headtail, { + QUEUE_FOREACH(q, &self->headtail, { MultiQueueItem *item = multiqueue_node_data(q); - if (this->parent) { + if (self->parent) { QUEUE_REMOVE(&item->data.item.parent_item->node); xfree(item->data.item.parent_item); } @@ -126,29 +126,29 @@ void multiqueue_free(MultiQueue *this) xfree(item); }) - xfree(this); + xfree(self); } /// Removes the next item and returns its Event. -Event multiqueue_get(MultiQueue *this) +Event multiqueue_get(MultiQueue *self) { - return multiqueue_empty(this) ? NILEVENT : multiqueue_remove(this); + return multiqueue_empty(self) ? NILEVENT : multiqueue_remove(self); } -void multiqueue_put_event(MultiQueue *this, Event event) +void multiqueue_put_event(MultiQueue *self, Event event) { - assert(this); - multiqueue_push(this, event); - if (this->parent && this->parent->put_cb) { - this->parent->put_cb(this->parent, this->parent->data); + assert(self); + multiqueue_push(self, event); + if (self->parent && self->parent->put_cb) { + self->parent->put_cb(self->parent, self->parent->data); } } -void multiqueue_process_events(MultiQueue *this) +void multiqueue_process_events(MultiQueue *self) { - assert(this); - while (!multiqueue_empty(this)) { - Event event = multiqueue_remove(this); + assert(self); + while (!multiqueue_empty(self)) { + Event event = multiqueue_remove(self); if (event.handler) { event.handler(event.argv); } @@ -156,30 +156,30 @@ void multiqueue_process_events(MultiQueue *this) } /// Removes all events without processing them. -void multiqueue_purge_events(MultiQueue *this) +void multiqueue_purge_events(MultiQueue *self) { - assert(this); - while (!multiqueue_empty(this)) { - (void)multiqueue_remove(this); + assert(self); + while (!multiqueue_empty(self)) { + (void)multiqueue_remove(self); } } -bool multiqueue_empty(MultiQueue *this) +bool multiqueue_empty(MultiQueue *self) { - assert(this); - return QUEUE_EMPTY(&this->headtail); + assert(self); + return QUEUE_EMPTY(&self->headtail); } -void multiqueue_replace_parent(MultiQueue *this, MultiQueue *new_parent) +void multiqueue_replace_parent(MultiQueue *self, MultiQueue *new_parent) { - assert(multiqueue_empty(this)); - this->parent = new_parent; + assert(multiqueue_empty(self)); + self->parent = new_parent; } /// Gets the count of all events currently in the queue. -size_t multiqueue_size(MultiQueue *this) +size_t multiqueue_size(MultiQueue *self) { - return this->size; + return self->size; } /// Gets an Event from an item. @@ -213,35 +213,35 @@ static Event multiqueueitem_get_event(MultiQueueItem *item, bool remove) return ev; } -static Event multiqueue_remove(MultiQueue *this) +static Event multiqueue_remove(MultiQueue *self) { - assert(!multiqueue_empty(this)); - QUEUE *h = QUEUE_HEAD(&this->headtail); + assert(!multiqueue_empty(self)); + QUEUE *h = QUEUE_HEAD(&self->headtail); QUEUE_REMOVE(h); MultiQueueItem *item = multiqueue_node_data(h); - assert(!item->link || !this->parent); // Only a parent queue has link-nodes + assert(!item->link || !self->parent); // Only a parent queue has link-nodes Event ev = multiqueueitem_get_event(item, true); - this->size--; + self->size--; xfree(item); return ev; } -static void multiqueue_push(MultiQueue *this, Event event) +static void multiqueue_push(MultiQueue *self, Event event) { MultiQueueItem *item = xmalloc(sizeof(MultiQueueItem)); item->link = false; item->data.item.event = event; item->data.item.parent_item = NULL; - QUEUE_INSERT_TAIL(&this->headtail, &item->node); - if (this->parent) { + QUEUE_INSERT_TAIL(&self->headtail, &item->node); + if (self->parent) { // push link node to the parent queue item->data.item.parent_item = xmalloc(sizeof(MultiQueueItem)); item->data.item.parent_item->link = true; - item->data.item.parent_item->data.queue = this; - QUEUE_INSERT_TAIL(&this->parent->headtail, + item->data.item.parent_item->data.queue = self; + QUEUE_INSERT_TAIL(&self->parent->headtail, &item->data.item.parent_item->node); } - this->size++; + self->size++; } static MultiQueueItem *multiqueue_node_data(QUEUE *q) -- cgit From 2f17ef1fc4b96cf1106fd95ba090d34a2e4b977b Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 22 Jun 2023 04:09:14 -0700 Subject: fix(messages): use "Vimscript" instead of "VimL" #24111 followup to #24109 fix #16150 --- src/nvim/event/multiqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index 0096d0e11e..262d141b26 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -40,7 +40,7 @@ // // The main reason for this queue hierarchy is to allow focusing on a single // event emitter while blocking the main loop. For example, if the `jobwait` -// VimL function is called on job1, the main loop will temporarily stop polling +// Vimscript function is called on job1, the main loop will temporarily stop polling // the event loop queue and poll job1 queue instead. Same with channels, when // calling `rpcrequest` we want to temporarily stop processing events from // other sources and focus on a specific channel. -- cgit From 353a4be7e84fdc101318215bdcc8a7e780d737fe Mon Sep 17 00:00:00 2001 From: dundargoc Date: Sun, 12 Nov 2023 13:13:58 +0100 Subject: build: remove PVS We already have an extensive suite of static analysis tools we use, which causes a fair bit of redundancy as we get duplicate warnings. PVS is also prone to give false warnings which creates a lot of work to identify and disable. --- src/nvim/event/multiqueue.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index 262d141b26..328fa68806 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -1,6 +1,3 @@ -// This is an open source non-commercial project. Dear PVS-Studio, please check -// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com - // Multi-level queue for selective async event processing. // Not threadsafe; access must be synchronized externally. // -- cgit From a827003e3052c6d9ee7bdb71518182e9bd76317d Mon Sep 17 00:00:00 2001 From: dundargoc Date: Sat, 25 Nov 2023 11:32:32 +0100 Subject: build: rework IWYU mapping files Create mapping to most of the C spec and some POSIX specific functions. This is more robust than relying files shipped with IWYU. --- src/nvim/event/multiqueue.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index 328fa68806..677b7e8e6a 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -45,7 +45,6 @@ #include #include #include -#include #include "nvim/event/defs.h" #include "nvim/event/multiqueue.h" -- cgit From 8b428ca8b79ebb7b36c3e403ff3bcb6924a635a6 Mon Sep 17 00:00:00 2001 From: dundargoc Date: Mon, 27 Nov 2023 16:00:21 +0100 Subject: build(IWYU): fix includes for func_attr.h --- src/nvim/event/multiqueue.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/nvim/event/multiqueue.c') diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c index 677b7e8e6a..3ab41bd299 100644 --- a/src/nvim/event/multiqueue.c +++ b/src/nvim/event/multiqueue.c @@ -48,6 +48,7 @@ #include "nvim/event/defs.h" #include "nvim/event/multiqueue.h" +#include "nvim/func_attr.h" #include "nvim/lib/queue.h" #include "nvim/memory.h" -- cgit