From 94d23e5697c00e864dee41d760729f796ddd1524 Mon Sep 17 00:00:00 2001 From: fosse Date: Fri, 2 Feb 2024 11:42:25 -0500 Subject: [PATCH] another leak! --- cw_monero/lib/api/wallet.dart | 108 ++++++++++++++-------------------- 1 file changed, 43 insertions(+), 65 deletions(-) diff --git a/cw_monero/lib/api/wallet.dart b/cw_monero/lib/api/wallet.dart index 5fe86b0c3..37bb10f72 100644 --- a/cw_monero/lib/api/wallet.dart +++ b/cw_monero/lib/api/wallet.dart @@ -11,16 +11,13 @@ import 'package:flutter/foundation.dart'; int _boolToInt(bool value) => value ? 1 : 0; -final getFileNameNative = moneroApi - .lookup>('get_filename') - .asFunction(); +final getFileNameNative = + moneroApi.lookup>('get_filename').asFunction(); -final getSeedNative = - moneroApi.lookup>('seed').asFunction(); +final getSeedNative = moneroApi.lookup>('seed').asFunction(); -final getAddressNative = moneroApi - .lookup>('get_address') - .asFunction(); +final getAddressNative = + moneroApi.lookup>('get_address').asFunction(); final getFullBalanceNative = moneroApi .lookup>('get_full_balance') @@ -38,41 +35,34 @@ final getNodeHeightNative = moneroApi .lookup>('get_node_height') .asFunction(); -final isConnectedNative = moneroApi - .lookup>('is_connected') - .asFunction(); +final isConnectedNative = + moneroApi.lookup>('is_connected').asFunction(); -final setupNodeNative = moneroApi - .lookup>('setup_node') - .asFunction(); +final setupNodeNative = + moneroApi.lookup>('setup_node').asFunction(); -final startRefreshNative = moneroApi - .lookup>('start_refresh') - .asFunction(); +final startRefreshNative = + moneroApi.lookup>('start_refresh').asFunction(); final connecToNodeNative = moneroApi .lookup>('connect_to_node') .asFunction(); final setRefreshFromBlockHeightNative = moneroApi - .lookup>( - 'set_refresh_from_block_height') + .lookup>('set_refresh_from_block_height') .asFunction(); final setRecoveringFromSeedNative = moneroApi - .lookup>( - 'set_recovering_from_seed') + .lookup>('set_recovering_from_seed') .asFunction(); -final storeNative = - moneroApi.lookup>('store').asFunction(); +final storeNative = moneroApi.lookup>('store').asFunction(); final setPasswordNative = moneroApi.lookup>('set_password').asFunction(); -final setListenerNative = moneroApi - .lookup>('set_listener') - .asFunction(); +final setListenerNative = + moneroApi.lookup>('set_listener').asFunction(); final getSyncingHeightNative = moneroApi .lookup>('get_syncing_height') @@ -83,8 +73,7 @@ final isNeededToRefreshNative = moneroApi .asFunction(); final isNewTransactionExistNative = moneroApi - .lookup>( - 'is_new_transaction_exist') + .lookup>('is_new_transaction_exist') .asFunction(); final getSecretViewKeyNative = moneroApi @@ -107,9 +96,8 @@ final closeCurrentWalletNative = moneroApi .lookup>('close_current_wallet') .asFunction(); -final onStartupNative = moneroApi - .lookup>('on_startup') - .asFunction(); +final onStartupNative = + moneroApi.lookup>('on_startup').asFunction(); final rescanBlockchainAsyncNative = moneroApi .lookup>('rescan_blockchain') @@ -123,13 +111,11 @@ final setTrustedDaemonNative = moneroApi .lookup>('set_trusted_daemon') .asFunction(); -final trustedDaemonNative = moneroApi - .lookup>('trusted_daemon') - .asFunction(); +final trustedDaemonNative = + moneroApi.lookup>('trusted_daemon').asFunction(); -final signMessageNative = moneroApi - .lookup>('sign_message') - .asFunction(); +final signMessageNative = + moneroApi.lookup>('sign_message').asFunction(); int getSyncingHeight() => getSyncingHeightNative(); @@ -144,11 +130,9 @@ String getSeed() => convertUTF8ToString(pointer: getSeedNative()); String getAddress({int accountIndex = 0, int addressIndex = 0}) => convertUTF8ToString(pointer: getAddressNative(accountIndex, addressIndex)); -int getFullBalance({int accountIndex = 0}) => - getFullBalanceNative(accountIndex); +int getFullBalance({int accountIndex = 0}) => getFullBalanceNative(accountIndex); -int getUnlockedBalance({int accountIndex = 0}) => - getUnlockedBalanceNative(accountIndex); +int getUnlockedBalance({int accountIndex = 0}) => getUnlockedBalanceNative(accountIndex); int getCurrentHeight() => getCurrentHeightNative(); @@ -187,7 +171,7 @@ bool setupNodeSync( passwordPointer, _boolToInt(useSSL), _boolToInt(isLightWallet), - socksProxyAddressPointer, + socksProxyAddressPointer, errorMessagePointer) != 0; @@ -206,8 +190,9 @@ bool setupNodeSync( } if (!isSetupNode) { - throw SetupWalletException( - message: convertUTF8ToString(pointer: errorMessagePointer)); + final errorMessage = convertUTF8ToString(pointer: errorMessagePointer); + calloc.free(errorMessagePointer); + throw SetupWalletException(message: errorMessage); } return isSetupNode; @@ -217,8 +202,7 @@ void startRefreshSync() => startRefreshNative(); Future connectToNode() async => connecToNodeNative() != 0; -void setRefreshFromBlockHeight({required int height}) => - setRefreshFromBlockHeightNative(height); +void setRefreshFromBlockHeight({required int height}) => setRefreshFromBlockHeightNative(height); void setRecoveringFromSeed({required bool isRecovery}) => setRecoveringFromSeedNative(_boolToInt(isRecovery)); @@ -234,7 +218,7 @@ void setPasswordSync(String password) { final errorMessagePointer = calloc(); final changed = setPasswordNative(passwordPointer, errorMessagePointer) != 0; calloc.free(passwordPointer); - + if (!changed) { final message = errorMessagePointer.ref.getValue(); calloc.free(errorMessagePointer); @@ -246,24 +230,19 @@ void setPasswordSync(String password) { void closeCurrentWallet() => closeCurrentWalletNative(); -String getSecretViewKey() => - convertUTF8ToString(pointer: getSecretViewKeyNative()); +String getSecretViewKey() => convertUTF8ToString(pointer: getSecretViewKeyNative()); -String getPublicViewKey() => - convertUTF8ToString(pointer: getPublicViewKeyNative()); +String getPublicViewKey() => convertUTF8ToString(pointer: getPublicViewKeyNative()); -String getSecretSpendKey() => - convertUTF8ToString(pointer: getSecretSpendKeyNative()); +String getSecretSpendKey() => convertUTF8ToString(pointer: getSecretSpendKeyNative()); -String getPublicSpendKey() => - convertUTF8ToString(pointer: getPublicSpendKeyNative()); +String getPublicSpendKey() => convertUTF8ToString(pointer: getPublicSpendKeyNative()); class SyncListener { - SyncListener(this.onNewBlock, this.onNewTransaction) - : _cachedBlockchainHeight = 0, - _lastKnownBlockHeight = 0, - _initialSyncHeight = 0; - + SyncListener(this.onNewBlock, this.onNewTransaction) + : _cachedBlockchainHeight = 0, + _lastKnownBlockHeight = 0, + _initialSyncHeight = 0; void Function(int, int, double) onNewBlock; void Function() onNewTransaction; @@ -285,8 +264,7 @@ class SyncListener { _cachedBlockchainHeight = 0; _lastKnownBlockHeight = 0; _initialSyncHeight = 0; - _updateSyncInfoTimer ??= - Timer.periodic(Duration(milliseconds: 1200), (_) async { + _updateSyncInfoTimer ??= Timer.periodic(Duration(milliseconds: 1200), (_) async { if (isNewTransactionExist()) { onNewTransaction(); } @@ -325,8 +303,8 @@ class SyncListener { void stop() => _updateSyncInfoTimer?.cancel(); } -SyncListener setListeners(void Function(int, int, double) onNewBlock, - void Function() onNewTransaction) { +SyncListener setListeners( + void Function(int, int, double) onNewBlock, void Function() onNewTransaction) { final listener = SyncListener(onNewBlock, onNewTransaction); setListenerNative(); return listener; @@ -368,7 +346,7 @@ Future setupNode( bool isLightWallet = false}) => compute, void>(_setupNodeSync, { 'address': address, - 'login': login , + 'login': login, 'password': password, 'useSSL': useSSL, 'isLightWallet': isLightWallet,