diff --git a/templates/sys.ts b/templates/sys.ts index cc0ca1a..12bfd0b 100644 --- a/templates/sys.ts +++ b/templates/sys.ts @@ -195,15 +195,23 @@ class UniffiFfiRsRustCaller { _checkUniffiLoaded(); const $callStatus = this.createCallStatus(); - let returnedVal = caller(unwrapPointer($callStatus)[0]); - - const [callStatus] = restorePointer({ - retType: [DataType_UniffiRustCallStatus], - paramsValue: $callStatus, - }); - uniffiCheckCallStatus(callStatus, liftString, liftError); - - return returnedVal; + try { + let returnedVal = caller(unwrapPointer($callStatus)[0]); + + const [callStatus] = restorePointer({ + retType: [DataType_UniffiRustCallStatus], + paramsValue: $callStatus, + }); + uniffiCheckCallStatus(callStatus, liftString, liftError); + + return returnedVal; + } finally { + freePointer({ + paramsType: [DataType_UniffiRustCallStatus], + paramsValue: $callStatus, + pointerType: PointerType.RsPointer, + }); + } } }