Added NULL pointer checking to ring buffer library.

This commit is contained in:
skarg
2008-09-16 12:59:06 +00:00
parent 5df087c88c
commit 9a61f79a72
+13 -8
View File
@@ -49,7 +49,7 @@
bool Ringbuf_Empty( bool Ringbuf_Empty(
RING_BUFFER const *b) RING_BUFFER const *b)
{ {
return (b->count == 0); return (b ? b->count == 0 : true);
} }
/**************************************************************************** /****************************************************************************
@@ -61,7 +61,10 @@ bool Ringbuf_Empty(
char *Ringbuf_Get_Front( char *Ringbuf_Get_Front(
RING_BUFFER const *b) RING_BUFFER const *b)
{ {
return (b->count ? &(b->data[b->head * b->element_size]) : NULL); if (b) {
return (b->count ? &(b->data[b->head * b->element_size]) : NULL);
}
return NULL;
} }
/**************************************************************************** /****************************************************************************
@@ -75,7 +78,7 @@ char *Ringbuf_Pop_Front(
{ {
char *data = NULL; /* return value */ char *data = NULL; /* return value */
if (b->count) { if (b && b->count) {
data = &(b->data[b->head * b->element_size]); data = &(b->data[b->head * b->element_size]);
b->head++; b->head++;
if (b->head >= b->element_count) if (b->head >= b->element_count)
@@ -131,11 +134,13 @@ void Ringbuf_Init(
unsigned element_size, /* size of one element in the data block */ unsigned element_size, /* size of one element in the data block */
unsigned element_count) unsigned element_count)
{ /* number of elements in the data block */ { /* number of elements in the data block */
b->head = 0; if (b) {
b->count = 0; b->head = 0;
b->data = data; b->count = 0;
b->element_size = element_size; b->data = data;
b->element_count = element_count; b->element_size = element_size;
b->element_count = element_count;
}
return; return;
} }