]> sigrok.org Git - pulseview.git/commitdiff
Fix #595 by correctly handling UINT64_MAX and INT_MAX boundaries
authorSoeren Apel <redacted>
Mon, 24 Aug 2015 16:21:15 +0000 (18:21 +0200)
committerUwe Hermann <redacted>
Tue, 25 Aug 2015 16:11:16 +0000 (18:11 +0200)
By using an int64_t to hold UINT64_MAX, it was made to overflow
to -1. This lead to range_min=0 and range_max=-1, resulting in
a disabled spin button.

pv/prop/int.cpp

index 31f518a8cbd481467d0e5195861058989574ae28..812b751608f3c561dd4ad8d45af4dc1e79008869 100644 (file)
@@ -51,7 +51,8 @@ Int::~Int()
 
 QWidget* Int::get_widget(QWidget *parent, bool auto_commit)
 {
-       int64_t int_val = 0, range_min = 0, range_max = 0;
+       int64_t int_val = 0, range_min = 0;
+       uint64_t range_max = 0;
 
        if (spin_box_)
                return spin_box_;
@@ -118,7 +119,7 @@ QWidget* Int::get_widget(QWidget *parent, bool auto_commit)
        // custom widget.
 
        range_min = max(range_min, (int64_t)INT_MIN);
-       range_max = min(range_max, (int64_t)INT_MAX);
+       range_max = min(range_max, (uint64_t)INT_MAX);
 
        if (range_)
                spin_box_->setRange((int)range_->first, (int)range_->second);