diff --git a/tinygrad/runtime/ops_metal.py b/tinygrad/runtime/ops_metal.py index a828e74657..d0251324d4 100644 --- a/tinygrad/runtime/ops_metal.py +++ b/tinygrad/runtime/ops_metal.py @@ -198,7 +198,8 @@ class MetalAllocator(LRUAllocator[MetalDevice]): ret = msg("newBufferWithLength:options:", objc_id)(self.dev.sysdevice, ctypes.c_ulong(size), MTLResourceOptions.MTLResourceStorageModeShared) if ret.value is None: raise MemoryError(f"Metal OOM while allocating {size=}") return MetalBuffer(ret, size) - def _free(self, opaque:MetalBuffer, options): msg("release")(opaque.buf) + def _free(self, opaque:MetalBuffer, options): + if msg is not None and libobjc is not None: msg("release")(opaque.buf) def _transfer(self, dest:MetalBuffer, src:MetalBuffer, sz:int, src_dev:MetalDevice, dest_dev:MetalDevice): dest_dev.synchronize() src_command_buffer = msg("commandBuffer", objc_instance)(src_dev.mtl_queue)