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

Avoid division by zero.
This fixes bug 6071.


diffs (111 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -380,7 +380,7 @@ do {                                                        
                \
        if (BATcapacity(bn) < maximum) {                                \
                impsloop(CAND, TEST,                                    \
                         buninsfix(bn, dst, cnt, o,                     \
-                                  (BUN) ((dbl) cnt / (dbl) (p-r)       \
+                                  (BUN) ((dbl) cnt / (dbl) (p == r ? 1 : p - 
r)        \
                                          * (dbl) (q-p) * 1.1 + 1024),  \
                                   BATcapacity(bn) + q - p, BUN_NONE)); \
        } else {                                                        \
@@ -445,7 +445,7 @@ do {                                                        
                \
                        v = src[o-off];                                 \
                        if (TEST) {                                     \
                                buninsfix(bn, dst, cnt, o,              \
-                                         (BUN) ((dbl) cnt / (dbl) (p-r) \
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r) \
                                                 * (dbl) (q-p) * 1.1 + 1024), \
                                          BATcapacity(bn) + q - p, BUN_NONE); \
                                cnt++;                                  \
@@ -611,7 +611,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
                        v = BUNtail(bi,(BUN)(o-off));
                        if ((*cmp)(tl, v) == 0) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -635,7 +635,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
                              ((c = (*cmp)(th, v)) < 0 ||
                               (!hi && c == 0))))) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -659,7 +659,7 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
                              (c = cmp(th, v)) > 0 ||
                              (hi && c == 0)))) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -699,7 +699,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
                        v = BUNtail(bi,(BUN)(o-off));
                        if ((*cmp)(tl, v) == 0) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -723,7 +723,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
                              ((c = (*cmp)(th, v)) < 0 ||
                               (!hi && c == 0))))) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -747,7 +747,7 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
                              (c = cmp(th, v)) > 0 ||
                              (hi && c == 0)))) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -787,7 +787,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co
                while (p < q) {
                        if (ptr[p] == pos) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -803,7 +803,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co
                while (p < q) {
                        if (ptr[p] == pos) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -819,7 +819,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co
                while (p < q) {
                        if (ptr[p] == pos) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
@@ -835,7 +835,7 @@ fullscan_str(BAT *b, BAT *s, BAT *bn, co
                while (p < q) {
                        if (ptr[p] == pos) {
                                buninsfix(bn, dst, cnt, o,
-                                         (BUN) ((dbl) cnt / (dbl) (p-r)
+                                         (BUN) ((dbl) cnt / (dbl) (p == r ? 1 
: p - r)
                                                 * (dbl) (q-p) * 1.1 + 1024),
                                          BATcapacity(bn) + q - p, BUN_NONE);
                                cnt++;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to