]> git.cworth.org Git - apitrace/blobdiff - trace_model.cpp
Don't clear the trace when the file selection has been cancelled.
[apitrace] / trace_model.cpp
index 8821417321616c1b50f46dc9cac1e22641c6d543..a817b39ea91c55c48ef1e47e485b0ddd1124d09d 100644 (file)
@@ -77,7 +77,7 @@ Pointer::operator bool(void) const { return value != 0; }
 
 
 // signed integer cast
-Value  ::operator signed long long (void) const { assert(0); return NULL; }
+Value  ::operator signed long long (void) const { assert(0); return 0; }
 Null   ::operator signed long long (void) const { return 0; }
 Bool   ::operator signed long long (void) const { return static_cast<signed long long>(value); }
 SInt   ::operator signed long long (void) const { return value; }
@@ -87,7 +87,7 @@ Enum   ::operator signed long long (void) const { return static_cast<signed long
 
 
 // unsigned integer cast
-Value  ::operator unsigned long long (void) const { assert(0); return NULL; }
+Value  ::operator unsigned long long (void) const { assert(0); return 0; }
 Null   ::operator unsigned long long (void) const { return 0; }
 Bool   ::operator unsigned long long (void) const { return static_cast<unsigned long long>(value); }
 SInt   ::operator unsigned long long (void) const { assert(value >= 0); return static_cast<signed long long>(value); }
@@ -97,7 +97,7 @@ Enum   ::operator unsigned long long (void) const { return static_cast<unsigned
 
 
 // floating point cast
-Value  ::operator double (void) const { assert(0); return NULL; }
+Value  ::operator double (void) const { assert(0); return 0; }
 Null   ::operator double (void) const { return 0; }
 Bool   ::operator double (void) const { return static_cast<double>(value); }
 SInt   ::operator double (void) const { return static_cast<double>(value); }
@@ -110,7 +110,7 @@ Enum   ::operator double (void) const { return static_cast<unsigned long long>(*
 void * Value  ::blob(void) const { assert(0); return NULL; }
 void * Null   ::blob(void) const { return NULL; }
 void * Blob   ::blob(void) const { return buf; }
-void * Pointer::blob(void) const { assert(value < 0x100000ULL); return (void *)value; }
+void * Pointer::blob(void) const { return (void *)value; }
 
 
 // virtual Value::visit()
@@ -236,8 +236,8 @@ public:
         const Bitmask::Signature *sig = bitmask->sig;
         bool first = true;
         for (Bitmask::Signature::const_iterator it = sig->begin(); value != 0 && it != sig->end(); ++it) {
-            assert(it->second);
-            if ((value & it->second) == it->second) {
+            if ((it->second && (value & it->second) == it->second) ||
+                (!it->second && value == 0)) {
                 if (!first) {
                     os << " | ";
                 }