def call_capi(space, name, args): state = space.fromcache(State) try: c_call = state.capi_calls[name] except KeyError: if state.library is None: load_reflection_library(space) iface = state.capi_call_ifaces[name] cfunc = W_RCTypeFunc(space, iface[0], iface[1], False) c_call = state.library.load_function(cfunc, 'cppyy_'+name) # TODO: there must be a better way to trick the leakfinder ... if not objectmodel.we_are_translated(): leakfinder.remember_free(c_call.ctype.cif_descr._obj0) state.capi_calls[name] = c_call return c_call.ctype.rcall(c_call._cdata, args)
def call_capi(space, name, args): state = space.fromcache(State) try: c_call = state.capi_calls[name] except KeyError: if state.library is None: load_reflection_library(space) iface = state.capi_call_ifaces[name] cfunc = W_RCTypeFunc(space, iface[0], iface[1], False) c_call = state.library.load_function(cfunc, 'cppyy_' + name) # TODO: there must be a better way to trick the leakfinder ... if not objectmodel.we_are_translated(): leakfinder.remember_free(c_call.ctype.cif_descr._obj0) state.capi_calls[name] = c_call return c_call.ctype.rcall(c_call._cdata, args)
def test_remember_free(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) leakfinder.remember_free(x) leakfinder.stop_tracking_allocations(True)
def test_remember_free(): leakfinder.start_tracking_allocations() x = 1234 leakfinder.remember_malloc(x) leakfinder.remember_free(x) leakfinder.stop_tracking_allocations(True)