* [Xenomai-core] [PATCH] vxWorks/lstLib: Check for nil-pointer
@ 2008-10-23 10:00 Niklaus Giger
2008-10-23 10:27 ` Philippe Gerum
0 siblings, 1 reply; 2+ messages in thread
From: Niklaus Giger @ 2008-10-23 10:00 UTC (permalink / raw)
To: xenomai-core
Here some trivial fixes with their respective tests to handle the case of nil pointers corrrectly.
Signed-off-by: Niklaus Giger <niklaus.giger@domain.hid>
---
include/vxworks/lstLib.h | 6 +++---
vxworks/lstLib.c | 4 +++-
vxworks/testsuite/lst-1.c | 17 +++++++----------
3 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/include/vxworks/lstLib.h b/include/vxworks/lstLib.h
index b78c2c3..38f0598 100644
--- a/include/vxworks/lstLib.h
+++ b/include/vxworks/lstLib.h
@@ -65,7 +65,7 @@ static inline void lstDelete(LIST *l, NODE *n)
static inline NODE *lstFirst(LIST *l)
{
- if (list_empty(&l->list))
+ if (l == NULL || list_empty(&l->list))
return NULL;
return list_first_entry(&l->list, struct NODE, link);
@@ -75,7 +75,7 @@ static inline NODE *lstGet(LIST *l)
{
struct NODE *n;
- if (list_empty(&l->list))
+ if (l == NULL || list_empty(&l->list))
return NULL;
n = list_pop_entry(&l->list, struct NODE, link);
@@ -100,7 +100,7 @@ static inline void lstInsert(LIST *l, NODE *nprev, NODE *n)
static inline NODE *lstLast(LIST *l)
{
- if (list_empty(&l->list))
+ if (l == NULL || list_empty(&l->list))
return NULL;
return list_last_entry(&l->list, struct NODE, link);
diff --git a/vxworks/lstLib.c b/vxworks/lstLib.c
index 58358f0..56880b4 100644
--- a/vxworks/lstLib.c
+++ b/vxworks/lstLib.c
@@ -44,7 +44,7 @@ NODE *lstNth(LIST *l, int nodenum)
struct holder *holder;
int nth;
- if (nodenum <= 0)
+ if (l == 0 || nodenum <= 0)
return NULL;
if (nodenum <= l->count >> 2) { /* nodenum is 1-based. */
@@ -89,6 +89,8 @@ int lstFind(LIST *l, NODE *n)
{
struct holder *holder;
int nth = 1;
+ if (l == 0)
+ return ERROR;
list_for_each(holder, &l->list) {
if (holder == &n->link)
diff --git a/vxworks/testsuite/lst-1.c b/vxworks/testsuite/lst-1.c
index 8b42692..d95d8b8 100644
--- a/vxworks/testsuite/lst-1.c
+++ b/vxworks/testsuite/lst-1.c
@@ -12,16 +12,15 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
{
NODE first, second, third, fourth;
LIST list;
- int ret;
traceobj_enter(&trobj);
-/*
- traceobj_assert(&trobj, 0 == lstNth (0, 1));
- traceobj_assert(&trobj, 0 == lstFirst(0));
- traceobj_assert(&trobj, 0 == lstLast(0));
-*/
- lstInit(&list);
+ traceobj_assert(&trobj, 0 == lstNth (0, 1));
+ traceobj_assert(&trobj, 0 == lstFirst(0));
+ traceobj_assert(&trobj, 0 == lstLast(0));
+ traceobj_assert(&trobj, 0 == lstGet(0));
+
+ lstInit(&list);
traceobj_assert(&trobj, 0 == lstCount(&list));
traceobj_assert(&trobj, NULL == lstFirst(&list));
traceobj_assert(&trobj, 0 == lstNth(&list, 0));
@@ -41,7 +40,7 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
traceobj_assert(&trobj, 2 == lstCount(&list));
traceobj_assert(&trobj, &first == lstFirst(&list));
traceobj_assert(&trobj, &second == lstLast(&list));
- traceobj_assert(&trobj, NULL == lstPrevious(&first)); // breaks here under xenomai-solo
+ traceobj_assert(&trobj, NULL == lstPrevious(&first));
traceobj_assert(&trobj, 0 == lstNth(&list, 0));
traceobj_assert(&trobj, &first == lstNth(&list, 1));
traceobj_assert(&trobj, &second == lstNth(&list, 2));
@@ -127,8 +126,6 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
traceobj_assert(&trobj, 0 == lstNth(&list, 4));
traceobj_assert(&trobj, 0 == lstNth(&list, 5));
- traceobj_assert(&trobj, ret == OK);
-
traceobj_exit(&trobj);
}
--
1.6.0.2
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [Xenomai-core] [PATCH] vxWorks/lstLib: Check for nil-pointer
2008-10-23 10:00 [Xenomai-core] [PATCH] vxWorks/lstLib: Check for nil-pointer Niklaus Giger
@ 2008-10-23 10:27 ` Philippe Gerum
0 siblings, 0 replies; 2+ messages in thread
From: Philippe Gerum @ 2008-10-23 10:27 UTC (permalink / raw)
To: Niklaus Giger; +Cc: xenomai-core
Niklaus Giger wrote:
> Here some trivial fixes with their respective tests to handle the case of nil pointers corrrectly.
>
Merged, thanks.
> Signed-off-by: Niklaus Giger <niklaus.giger@domain.hid>
> ---
> include/vxworks/lstLib.h | 6 +++---
> vxworks/lstLib.c | 4 +++-
> vxworks/testsuite/lst-1.c | 17 +++++++----------
> 3 files changed, 13 insertions(+), 14 deletions(-)
>
> diff --git a/include/vxworks/lstLib.h b/include/vxworks/lstLib.h
> index b78c2c3..38f0598 100644
> --- a/include/vxworks/lstLib.h
> +++ b/include/vxworks/lstLib.h
> @@ -65,7 +65,7 @@ static inline void lstDelete(LIST *l, NODE *n)
>
> static inline NODE *lstFirst(LIST *l)
> {
> - if (list_empty(&l->list))
> + if (l == NULL || list_empty(&l->list))
> return NULL;
>
> return list_first_entry(&l->list, struct NODE, link);
> @@ -75,7 +75,7 @@ static inline NODE *lstGet(LIST *l)
> {
> struct NODE *n;
>
> - if (list_empty(&l->list))
> + if (l == NULL || list_empty(&l->list))
> return NULL;
>
> n = list_pop_entry(&l->list, struct NODE, link);
> @@ -100,7 +100,7 @@ static inline void lstInsert(LIST *l, NODE *nprev, NODE *n)
>
> static inline NODE *lstLast(LIST *l)
> {
> - if (list_empty(&l->list))
> + if (l == NULL || list_empty(&l->list))
> return NULL;
>
> return list_last_entry(&l->list, struct NODE, link);
> diff --git a/vxworks/lstLib.c b/vxworks/lstLib.c
> index 58358f0..56880b4 100644
> --- a/vxworks/lstLib.c
> +++ b/vxworks/lstLib.c
> @@ -44,7 +44,7 @@ NODE *lstNth(LIST *l, int nodenum)
> struct holder *holder;
> int nth;
>
> - if (nodenum <= 0)
> + if (l == 0 || nodenum <= 0)
> return NULL;
>
> if (nodenum <= l->count >> 2) { /* nodenum is 1-based. */
> @@ -89,6 +89,8 @@ int lstFind(LIST *l, NODE *n)
> {
> struct holder *holder;
> int nth = 1;
> + if (l == 0)
> + return ERROR;
>
> list_for_each(holder, &l->list) {
> if (holder == &n->link)
> diff --git a/vxworks/testsuite/lst-1.c b/vxworks/testsuite/lst-1.c
> index 8b42692..d95d8b8 100644
> --- a/vxworks/testsuite/lst-1.c
> +++ b/vxworks/testsuite/lst-1.c
> @@ -12,16 +12,15 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
> {
> NODE first, second, third, fourth;
> LIST list;
> - int ret;
>
> traceobj_enter(&trobj);
>
> -/*
> - traceobj_assert(&trobj, 0 == lstNth (0, 1));
> - traceobj_assert(&trobj, 0 == lstFirst(0));
> - traceobj_assert(&trobj, 0 == lstLast(0));
> -*/
> - lstInit(&list);
> + traceobj_assert(&trobj, 0 == lstNth (0, 1));
> + traceobj_assert(&trobj, 0 == lstFirst(0));
> + traceobj_assert(&trobj, 0 == lstLast(0));
> + traceobj_assert(&trobj, 0 == lstGet(0));
> +
> + lstInit(&list);
> traceobj_assert(&trobj, 0 == lstCount(&list));
> traceobj_assert(&trobj, NULL == lstFirst(&list));
> traceobj_assert(&trobj, 0 == lstNth(&list, 0));
> @@ -41,7 +40,7 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
> traceobj_assert(&trobj, 2 == lstCount(&list));
> traceobj_assert(&trobj, &first == lstFirst(&list));
> traceobj_assert(&trobj, &second == lstLast(&list));
> - traceobj_assert(&trobj, NULL == lstPrevious(&first)); // breaks here under xenomai-solo
> + traceobj_assert(&trobj, NULL == lstPrevious(&first));
> traceobj_assert(&trobj, 0 == lstNth(&list, 0));
> traceobj_assert(&trobj, &first == lstNth(&list, 1));
> traceobj_assert(&trobj, &second == lstNth(&list, 2));
> @@ -127,8 +126,6 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
> traceobj_assert(&trobj, 0 == lstNth(&list, 4));
> traceobj_assert(&trobj, 0 == lstNth(&list, 5));
>
> - traceobj_assert(&trobj, ret == OK);
> -
> traceobj_exit(&trobj);
> }
>
> --
> 1.6.0.2
>
>
>
> _______________________________________________
> Xenomai-core mailing list
> Xenomai-core@domain.hid
> https://mail.gna.org/listinfo/xenomai-core
>
--
Philippe.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-10-23 10:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-23 10:00 [Xenomai-core] [PATCH] vxWorks/lstLib: Check for nil-pointer Niklaus Giger
2008-10-23 10:27 ` Philippe Gerum
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.