Changeset: 6ad531950fbf for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6ad531950fbf
Modified Files:
        gdk/gdk_select.c
Branch: default
Log Message:

Dont take jumps through the candidate list
Copy paste error leading to double increment where one is intended.


diffs (36 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -188,7 +188,7 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                        assert(!anti);\
                        for ((i) = (p); (i) < (q); (i)++){  \
                                r = (BUN) (*candlist++ - off) ;\
-                               if ( (src)[(BUN) (*candlist++ - off) ] == 
*(TYPE*) tl ) \
+                               if ( (src)[r] == *(TYPE*) tl ) \
                                        (dst)[cnt++] = i;\
                        }\
                } else if (anti){\
@@ -250,14 +250,18 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                } else {\
                        if ( nil == NULL) \
                        for ((i) = (p); (i) < (q); (i)++) {\
-                               if( (!lval || ( *(TYPE*) tl < (src)[i] || (li 
&& ((src)[i] == *(TYPE*) tl)))) &&\
-                                (!hval || ( *(TYPE*) th > (src)[i] || (hi && 
((src)[i] == *(TYPE*) th)))))\
+                               int lc,rc; \
+                               lc =(!lval || ( *(TYPE*) tl < (src)[i] || (li 
&& ((src)[i] == *(TYPE*) tl)))); \
+                               rc = (!hval || ( *(TYPE*) th > (src)[i] || (hi 
&& ((src)[i] == *(TYPE*) th)))); \
+                               if ( lc + rc == 2)\
                                        (dst)[cnt++] = i;\
                        } else \
                        for ((i) = (p); (i) < (q); (i)++) {\
-                               if( ((src)[i] != TYPE##_nil) &&\
-                                (!lval || ( *(TYPE*) tl < (src)[i] || (li && 
((src)[i] == *(TYPE*) tl)))) &&\
-                                (!hval || ( *(TYPE*) th > (src)[i] || (hi && 
((src)[i] == *(TYPE*) th)))))\
+                               int nc, lc,rc; \
+                               nc =((src)[i] != TYPE##_nil);\
+                               lc =(!lval || ( *(TYPE*) tl < (src)[i] || (li 
&& ((src)[i] == *(TYPE*) tl)))); \
+                               rc = (!hval || ( *(TYPE*) th > (src)[i] || (hi 
&& ((src)[i] == *(TYPE*) th)))); \
+                               if ( nc +lc + rc == 3)\
                                        (dst)[cnt++] = i;\
                        }\
                }\
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to