mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-15 10:29:47 +00:00
Merge branch 'master' of github.com:cesanta/mongoose
This commit is contained in:
commit
419126652e
3 files changed
+8
-4
No files matched your search
@@ -184,7 +184,7 @@ static void q_copyout(struct queue *q, uint8_t *buf, size_t len, size_t tail) {
|
||||
|
||||
static bool q_write(struct queue *q, const void *buf, size_t len) {
|
||||
bool success = false;
|
||||
size_t left = q->len - q->head + q->tail;
|
||||
size_t left = (q->len - q->head + q->tail -1) % q->len;
|
||||
if (len + sizeof(size_t) <= left) {
|
||||
q_copyin(q, (uint8_t *) &len, sizeof(len), q->head);
|
||||
q_copyin(q, (uint8_t *) buf, len, (q->head + sizeof(size_t)) % q->len);
|
||||
|
||||
+1
-1
@@ -6472,7 +6472,7 @@ static void q_copyout(struct queue *q, uint8_t *buf, size_t len, size_t tail) {
|
||||
|
||||
static bool q_write(struct queue *q, const void *buf, size_t len) {
|
||||
bool success = false;
|
||||
size_t left = q->len - q->head + q->tail;
|
||||
size_t left = (q->len - q->head + q->tail -1) % q->len;
|
||||
if (len + sizeof(size_t) <= left) {
|
||||
q_copyin(q, (uint8_t *) &len, sizeof(len), q->head);
|
||||
q_copyin(q, (uint8_t *) buf, len, (q->head + sizeof(size_t)) % q->len);
|
||||
|
||||
+6
-2
@@ -2,15 +2,17 @@
|
||||
#include "mongoose.c"
|
||||
|
||||
static void test_queue(void) {
|
||||
uint8_t buf[sizeof(size_t) + 5];
|
||||
static uint8_t buf[sizeof(size_t) + sizeof(uint16_t) + 3 ]; // fit 1 element but not 2
|
||||
uint16_t val = 1234;
|
||||
struct queue q = {buf, sizeof(buf), 0, 0};
|
||||
static struct queue q = {buf, sizeof(buf), 0, 0};
|
||||
|
||||
// Write to an empty queue, and read back
|
||||
assert(q_avail(&q) == 0);
|
||||
assert(q_write(&q, &val, sizeof(val)) == true);
|
||||
assert(q_avail(&q) == sizeof(val));
|
||||
assert(q.head > q.tail);
|
||||
// Only one element may fit
|
||||
assert(q_write(&q, &val, sizeof(val)) == false);
|
||||
val = 0;
|
||||
assert(q_read(&q, &val) == sizeof(val));
|
||||
assert(val == 1234);
|
||||
@@ -20,6 +22,8 @@ static void test_queue(void) {
|
||||
assert(q_write(&q, &val, sizeof(val)) == true);
|
||||
assert(q_avail(&q) == sizeof(val));
|
||||
assert(q.head < q.tail);
|
||||
// Only one element may fit
|
||||
assert(q_write(&q, &val, sizeof(val)) == false);
|
||||
val = 0;
|
||||
assert(q_read(&q, &val) == sizeof(val));
|
||||
assert(val == 1234);
|
||||
|
||||
Reference in new issue
Block a user