]> git.cworth.org Git - apitrace/blobdiff - retrace/retrace_swizzle.cpp
Use skiplist-based FastCallSet within trace::CallSet
[apitrace] / retrace / retrace_swizzle.cpp
index fe0df21c9deceab0dffc8e281edc00d7b8379ce7..2045f6bb7c83eafe5e71cca35141ce19080e7a1a 100644 (file)
@@ -255,8 +255,20 @@ toPointer(trace::Value &value, bool bind) {
 static std::map<unsigned long long, void *> _obj_map;
 
 void
-addObj(trace::Value &value, void *obj) {
+addObj(trace::Call &call, trace::Value &value, void *obj) {
     unsigned long long address = value.toUIntPtr();
+
+    if (!address) {
+        if (obj) {
+            warning(call) << "unexpected non-null object\n";
+        }
+        return;
+    }
+
+    if (!obj) {
+        warning(call) << "got null for object 0x" << std::hex << address << std::dec << "\n";
+    }
+
     _obj_map[address] = obj;
     
     if (retrace::verbosity >= 2) {
@@ -278,7 +290,7 @@ toObjPointer(trace::Call &call, trace::Value &value) {
     if (address) {
         obj = _obj_map[address];
         if (!obj) {
-            warning(call) << "unknown object 0x" << std::hex << address << std::dec << " call\n";
+            warning(call) << "unknown object 0x" << std::hex << address << std::dec << "\n";
         }
     } else {
         obj = NULL;