Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f8069b1 authored by Mathias Jeppsson's avatar Mathias Jeppsson Committed by Johan Redestig
Browse files

Memory leak in TextKeyListener.

If a call to getPrefs is made after weak reference to content resolver
is gone, a new observer will be created and registered at the
resolver. At registration, the resolver will allocate ObserverEntry
objects that will eventually fill the JNI global reference pool.
There is no need to create and register a new observer if one is already
registered.

Change-Id: If8442b3370299980b73d4ea83757c5eae6a85408
parent 75a2ae93
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -246,8 +246,11 @@ public class TextKeyListener extends BaseKeyListener implements SpanWatcher {
    private void initPrefs(Context context) {
    private void initPrefs(Context context) {
        final ContentResolver contentResolver = context.getContentResolver();
        final ContentResolver contentResolver = context.getContentResolver();
        mResolver = new WeakReference<ContentResolver>(contentResolver);
        mResolver = new WeakReference<ContentResolver>(contentResolver);

        if (mObserver == null) {
            mObserver = new SettingsObserver();
            mObserver = new SettingsObserver();
            contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver);
            contentResolver.registerContentObserver(Settings.System.CONTENT_URI, true, mObserver);
        }


        updatePrefs(contentResolver);
        updatePrefs(contentResolver);
        mPrefsInited = true;
        mPrefsInited = true;