`ScanForWalletTransactions()` has the following comment about its return value:

```
 * Returns null if scan was successful. Otherwise, if a complete rescan was not
 * possible (due to pruning or corruption), returns pointer to the most recent
 * block that could not be scanned.
```

This is not strictly true. If `abortrescan` is called, then `ScanForWalletTransactions()` will return `nullptr`, even though the scan wasn't successful to the tip.

This in turn causes a minor bug in `importmulti`, where the call doesn't return the correct error and warning about potentially not finding transactions if `abortrescan` was called.

I think the correct fix is for `ScanForWalletTransactions()` to inform the caller that the rescan was aborted.
{
    }
    ~CWallet()
    {
        delete encrypted_batch;
        encrypted_batch = nullptr;
    }
    std::map<uint256, CWalletTx> mapWallet GUARDED_BY(cs_wallet);
    typedef std::multimap<int64_t, CWalletTx*> TxItems;
    TxItems wtxOrdered;
    int64_t nOrderPosNext GUARDED_BY(cs_wallet) = 0;
    uint64_t nAccountingEntryNumber = 0;
    std::map<CTxDestination, CAddressBookData> mapAddressBook;
    std::set<COutPoint> setLockedCoins GUARDED_BY(cs_wallet);
    
    interfaces::Chain& chain() const { return m_chain; }
    const CWalletTx* GetWalletTx(const uint256& hash) const;
    
    bool CanSupportFeature(enum WalletFeature wf) const EXCLUSIVE_LOCKS_REQUIRED(cs_wallet) { AssertLockHeld(cs_wallet); return nWalletMaxVersion >= wf; }
    /**
     * populate vCoins with vector of available COutputs.
     */