Changeset: 48a3b8f1f9b2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=48a3b8f1f9b2
Modified Files:
        monetdb5/modules/mal/pqueue.c
Branch: Feb2013
Log Message:

PQtopn_sorted_(min|max)(): ensure that BATslice() is called with BUN (not wrd) 
argument

This should finally fix compilation with 32-bit OIDs on 64-bit Windows, again.


diffs (37 lines):

diff --git a/monetdb5/modules/mal/pqueue.c b/monetdb5/modules/mal/pqueue.c
--- a/monetdb5/modules/mal/pqueue.c
+++ b/monetdb5/modules/mal/pqueue.c
@@ -1066,11 +1066,12 @@ PQinit(int *ret, int *bid, wrd *maxsize)
 }
 
 static void
-PQtopn_sorted_min( BAT **bn, BAT *b, wrd N )
+PQtopn_sorted_min( BAT **bn, BAT *b, wrd _N )
 {
-       wrd cnt = BATcount(b);
+       BUN cnt = BATcount(b), N = (BUN) _N;
+       assert(_N >= 0);
        if (b->tsorted) {
-               b = BATslice(b, (cnt-N)<0?0:cnt-N, cnt);
+               b = BATslice(b, N>=cnt?0:cnt-N, cnt);
                *bn = BATsort_rev(b);
                BBPreleaseref(b->batCacheid);   
        } else 
@@ -1078,13 +1079,14 @@ PQtopn_sorted_min( BAT **bn, BAT *b, wrd
 }
 
 static void
-PQtopn_sorted_max( BAT **bn, BAT *b, wrd N )
+PQtopn_sorted_max( BAT **bn, BAT *b, wrd _N )
 {
-       wrd cnt = BATcount(b);
+       BUN cnt = BATcount(b), N = (BUN) _N;
+       assert(_N >= 0);
        if (b->tsorted) 
                *bn = BATslice(b, 0, N>=cnt?cnt:N);
        else {
-               b = BATslice(b, (cnt-N)<0?0:cnt-N, cnt);
+               b = BATslice(b, N>=cnt?0:cnt-N, cnt);
                *bn = BATsort_rev(b);
                BBPreleaseref(b->batCacheid);   
        }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to