[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/solid
From:       Kevin Ottens <ervin () kde ! org>
Date:       2009-07-24 11:42:34
Message-ID: 1248435754.714357.24882.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1001864 by ervin:

Handle correctly when we're provided an unknown enum value with the &
operator. We were previously trying to mask it against -1, and the
result was always true.


 M  +6 -1      solid/predicate.cpp  
 M  +3 -0      tests/solidhwtest.cpp  


--- trunk/KDE/kdelibs/solid/solid/predicate.cpp #1001863:1001864
@@ -212,7 +212,12 @@
 
             if (metaProp.isEnumType() && expected.type()==QVariant::String) {
                 QMetaEnum metaEnum = metaProp.enumerator();
-                expected = \
QVariant(metaEnum.keysToValue(d->value.toString().toLatin1())); +                int \
value = metaEnum.keysToValue(d->value.toString().toLatin1()); +                if \
(value>=0) { // No value found for these keys, resetting expected to invalid +        \
expected = value; +                } else {
+                    expected = QVariant();
+                }
             }
 
             if (d->compOperator==Mask) {
--- trunk/KDE/kdelibs/solid/tests/solidhwtest.cpp #1001863:1001864
@@ -347,13 +347,16 @@
     Solid::Predicate p8 = Solid::Predicate::fromString("AudioInterface.deviceType == \
                'AudioInput|AudioOutput'");
     Solid::Predicate p9 = Solid::Predicate::fromString("AudioInterface.deviceType == \
                'AudioInput'");
     Solid::Predicate p10 = Solid::Predicate::fromString("AudioInterface.deviceType  \
& 'AudioInput'"); +    Solid::Predicate p11 = \
Solid::Predicate::fromString("AudioInterface.deviceType  & 'foobar'");  \
QVERIFY(!p8.matches(dev));  QVERIFY(!p9.matches(dev));
     QVERIFY(!p10.matches(dev));
+    QVERIFY(!p11.matches(dev));
     dev = Solid::Device("/org/kde/solid/fakehw/pci_8086_266e_oss_pcm_0");
     QVERIFY(p8.matches(dev));
     QVERIFY(!p9.matches(dev));
     QVERIFY(p10.matches(dev));
+    QVERIFY(!p11.matches(dev));
 
     QString str_pred = "[[Processor.maxSpeed == 3201 AND \
Processor.canChangeFrequency == false] OR StorageVolume.mountPoint == \
                '/media/blup']";
     // Since str_pred is canonicalized, fromString().toString() should be invariant


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic