#include <stdlib.h>
#include <string.h>
#include <assert.h>
+#include <errno.h>
#include "sn_comparator.h"
#include "sn_stage.h"
sn_comparator_t *temp;
int i;
+ if ((s == NULL) || (c == NULL))
+ return (EINVAL);
+
+ i = sn_stage_comparator_check_conflict (s, c);
+ if (i != 0)
+ return (i);
+
temp = (sn_comparator_t *) realloc (s->comparators,
(s->comparators_num + 1) * sizeof (sn_comparator_t));
if (temp == NULL)
- return (-1);
+ return (ENOMEM);
s->comparators = temp;
temp = NULL;
int nmemb = s->comparators_num - (c_num + 1);
sn_comparator_t *temp;
+ if ((s == NULL) || (s->comparators_num <= c_num))
+ return (EINVAL);
+
assert (c_num < s->comparators_num);
assert (c_num >= 0);
sn_stage_t *sn_stage_clone (const sn_stage_t *s)
{
sn_stage_t *s_copy;
+ int i;
s_copy = sn_stage_create (s->depth);
if (s_copy == NULL)
{
int i;
+ if (s == NULL)
+ return (EINVAL);
+
for (i = 0; i < s->comparators_num; i++)
sn_comparator_invert (s->comparators + i);
{
int i;
+ if ((s == NULL) || (inputs_num < 2))
+ return (EINVAL);
+
+ sw %= inputs_num;
+ if (sw == 0)
+ return (0);
+
for (i = 0; i < s->comparators_num; i++)
sn_comparator_shift (s->comparators + i, sw, inputs_num);
{
int i;
+ if (s == NULL)
+ return (EINVAL);
+
for (i = 0; i < s->comparators_num; i++)
sn_comparator_swap (s->comparators + i, con0, con1);
int new_position = input;
int i;
+ if ((s == NULL) || (input < 0))
+ return (-EINVAL);
+
for (i = 0; i < s->comparators_num; i++)
{
sn_comparator_t *c = s->comparators + i;
#define SNPRINTF_OR_FAIL(...) \
status = snprintf (buffer, buffer_size, __VA_ARGS__); \
- if ((status < 1) || (status >= buffer_size)) \
+ if ((status < 1) || (((size_t) status) >= buffer_size)) \
return (-1); \
buffer += status; \
buffer_size -= status;