changeset 44:295e76f7bd28

For parray, added a better PARRAY_INDEX that evaluate to the following: if (index < 0 || arr->length == 0) data = a->datas[0]; else if (index >= arr->length) data = a->datas[arr->length - 1]; else data = a->datas[index];
author David Demelier <markand@malikania.fr>
date Sun, 02 Oct 2011 19:57:07 +0200
parents f1e184940197
children 86dbd57a39de
files parray.h
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/parray.h	Sun Oct 02 17:28:43 2011 +0200
+++ b/parray.h	Sun Oct 02 19:57:07 2011 +0200
@@ -58,7 +58,8 @@
 #define PARRAY_TAIL(a)								\
 	a->datas[a->length - 1]
 #define PARRAY_INDEX(a, i)							\
-	a->datas[(i < 0 || i >= (a)->length) ? 0 : i]
+	a->datas[(i < 0 || a->length == 0) ? 0 :				\
+	    (i >= a->length) ? a->length - 1 : i]
 
 #define PARRAY_FOREACH_R(a, var)						\
 	for ((a)->_i = (a)->length - 1, var = PARRAY_INDEX((a), (a)->_i);	\