]> git.cworth.org Git - apitrace/blobdiff - retrace/retrace.py
Retrace IUnknown::AddRef/Release correctly.
[apitrace] / retrace / retrace.py
index 8198b0a31e19054b0c0e893d49b088e3cac8f809..2e0350107a64f7e17ced6f9145acc462053816e2 100644 (file)
@@ -422,6 +422,14 @@ class Retracer:
             print '    %s(%s);' % (function.name, arg_names)
 
     def invokeInterfaceMethod(self, interface, method):
+        # On release our reference when we reach Release() == 0 call in the
+        # trace.
+        if method.name == 'Release':
+            print '    if (call.ret->toUInt()) {'
+            print '        return;'
+            print '    }'
+            print '    _obj_map.erase(call.arg(0).toUIntPtr());'
+
         arg_names = ", ".join(method.argNames())
         if method.type is not stdapi.Void:
             print '    %s __result;' % (method.type)