Browse Source

【主线待合】这里出现负数记一个错误日志并且强制返回0,防止memcpy接收负数而崩溃

paint_robot_new-v1.5
Lizongdi 2 weeks ago
parent
commit
9e51832ceb
  1. 15
      library/ringbuffer/ringbuffer.c

15
library/ringbuffer/ringbuffer.c

@ -78,6 +78,7 @@ void rd_RingbufferInit(rd_ringbuf_t *rb, char *pool, int size)
int rd_RingbufferSpaceLen(rd_ringbuf_t *rb)
{
if (!rb) return -1;
int iRet = 0;
unsigned short wi = ATOMIC_LOAD(&rb->m_sWriteIndex, unsigned short, ATOMIC_ORDER_ACQUIRE);
unsigned short ri = ATOMIC_LOAD(&rb->m_sReadIndex, unsigned short, ATOMIC_ORDER_RELAXED);
@ -85,9 +86,19 @@ int rd_RingbufferSpaceLen(rd_ringbuf_t *rb)
unsigned char rb_m = ATOMIC_LOAD(&rb->m_bReadMirror, unsigned char, ATOMIC_ORDER_RELAXED);
if (wb == rb_m) {
return rb->m_iBufsize - (wi - ri);
iRet = rb->m_iBufsize - (wi - ri);
} else {
return ri - wi;
iRet = ri - wi;
}
if (iRet > 0)
{
return iRet;
}
else
{
log_e("wb = %d, rb_m = %d, wi = %d, ri = %d", wb, rb_m, wi, ri);
return 0;
}
}

Loading…
Cancel
Save