diff --git a/pykd/variant.h b/pykd/variant.h index 14dba09..9a25b0c 100644 --- a/pykd/variant.h +++ b/pykd/variant.h @@ -1,6 +1,7 @@ #pragma once #include "kdlib/variant.h" +#include "kdlib/exceptions.h" namespace pykd { @@ -87,12 +88,26 @@ public: public: - static python::object eq( kdlib::NumBehavior& var, python::object& obj ) { - return convertToPython(var) == obj; + static python::object eq( kdlib::NumBehavior& var, python::object& obj ) + { + try { + return convertToPython(var) == obj; + } + catch( kdlib::DbgException& ) + {} + + return python::object(false); } - static python::object ne( kdlib::NumBehavior& var, python::object& obj ) { - return convertToPython(var) != obj; + static python::object ne( kdlib::NumBehavior& var, python::object& obj ) + { + try { + return convertToPython(var) != obj; + } + catch( kdlib::DbgException& ) + {} + + return python::object(true); } static python::object lt( kdlib::NumBehavior& var, python::object& obj ) { @@ -184,7 +199,13 @@ public: } static python::object nonzero(kdlib::NumBehavior& var) { - return convertToPython(var) != 0; + try { + return convertToPython(var) != 0; + } + catch( kdlib::DbgException& ) + {} + + return python::object(true); } static python::object long_(kdlib::NumBehavior& var ) { diff --git a/test/scripts/typeinfo.py b/test/scripts/typeinfo.py index 63f5c86..97eb6f4 100644 --- a/test/scripts/typeinfo.py +++ b/test/scripts/typeinfo.py @@ -241,11 +241,15 @@ class TypeInfoTest( unittest.TestCase ): self.assertTrue( "UInt8B[10]", ti.name() ) def testCompareWihNone(self): - ti = None + ti = pykd.typeInfo("UInt8B") if ti == None: - ti = pykd.typeInfo("UInt8B") - if ti == None: - pass + pass + if ti != None: + pass + if not ti: + pass + if ti: + pass def testFunction(self): functype = target.module.typedVar( "CdeclFuncPtr" ).type().deref()