EventQueue: allow passing (0, NULL) on static queue creation

pull/11342/head
Maciej Bocianski 2019-08-30 13:20:12 +02:00
parent b45d6d6a76
commit 4c3889dca1
2 changed files with 4 additions and 4 deletions

View File

@ -24,9 +24,9 @@ namespace events {
EventQueue::EventQueue(unsigned event_size, unsigned char *event_pointer)
{
if (event_size == 0) {
// As static queue (EventQueue(0)) won't perform any access to its dummy buffer
// set 1B dummy buffer as pointer to itself
equeue_create_inplace(&_equeue, 1, this);
// As static queue (EventQueue(0)) won't perform any access to its data buffer
// we can pass (0, NULL)
equeue_create_inplace(&_equeue, 0, NULL);
} else {
if (!event_pointer) {
equeue_create(&_equeue, event_size);

View File

@ -22,7 +22,7 @@
#include <string.h>
// check if the event is allocaded by user - event address is outside queues internal buffer address range
#define EQUEUE_IS_USER_ALLOCATED_EVENT(e) (((uintptr_t)(e) < (uintptr_t)q->buffer) || ((uintptr_t)(e) > ((uintptr_t)q->slab.data)))
#define EQUEUE_IS_USER_ALLOCATED_EVENT(e) ((q->buffer == NULL) || ((uintptr_t)(e) < (uintptr_t)q->buffer) || ((uintptr_t)(e) > ((uintptr_t)q->slab.data)))
// calculate the relative-difference between absolute times while
// correctly handling overflow conditions