| 828 | } |
| 829 | |
| 830 | bool MMKV::removeDataForKey(MMKVKey_t key) { |
| 831 | if (isKeyEmpty(key)) { |
| 832 | return false; |
| 833 | } |
| 834 | #ifndef MMKV_DISABLE_CRYPT |
| 835 | if (m_crypter) { |
| 836 | auto itr = m_dicCrypt->find(key); |
| 837 | if (itr != m_dicCrypt->end()) { |
| 838 | m_hasFullWriteback = false; |
| 839 | static MMBuffer nan; |
| 840 | # ifdef MMKV_APPLE |
| 841 | auto ret = appendDataWithKey(nan, key, itr->second); |
| 842 | if (ret.first) { |
| 843 | if (mmkv_unlikely(m_enableKeyExpire)) { |
| 844 | // filterExpiredKeys() may invalid itr |
| 845 | itr = m_dicCrypt->find(key); |
| 846 | if (itr == m_dicCrypt->end()) { |
| 847 | return true; |
| 848 | } |
| 849 | } |
| 850 | auto oldKey = itr->first; |
| 851 | m_dicCrypt->erase(itr); |
| 852 | [oldKey release]; |
| 853 | } |
| 854 | # else |
| 855 | auto ret = appendDataWithKey(nan, key); |
| 856 | if (ret.first) { |
| 857 | if (mmkv_unlikely(m_enableKeyExpire)) { |
| 858 | eraseHelper(*m_dicCrypt, key); |
| 859 | } else { |
| 860 | m_dicCrypt->erase(itr); |
| 861 | } |
| 862 | } |
| 863 | # endif |
| 864 | return ret.first; |
| 865 | } |
| 866 | } else |
| 867 | #endif // MMKV_DISABLE_CRYPT |
| 868 | { |
| 869 | auto itr = m_dic->find(key); |
| 870 | if (itr != m_dic->end()) { |
| 871 | m_hasFullWriteback = false; |
| 872 | static MMBuffer nan; |
| 873 | auto ret = mmkv_likely(!m_enableKeyExpire) ? appendDataWithKey(nan, itr->second) : appendDataWithKey(nan, key); |
| 874 | if (ret.first) { |
| 875 | #ifdef MMKV_APPLE |
| 876 | if (mmkv_unlikely(m_enableKeyExpire)) { |
| 877 | // filterExpiredKeys() may invalid itr |
| 878 | itr = m_dic->find(key); |
| 879 | if (itr == m_dic->end()) { |
| 880 | return true; |
| 881 | } |
| 882 | } |
| 883 | auto oldKey = itr->first; |
| 884 | m_dic->erase(itr); |
| 885 | [oldKey release]; |
| 886 | #else |
| 887 | if (mmkv_unlikely(m_enableKeyExpire)) { |
nothing calls this directly
no test coverage detected