File tree Expand file tree Collapse file tree
packages/SettingsProvider/src/com/android/providers/settings Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -506,7 +506,14 @@ private void startAsyncCachePopulation(int userHandle) {
506506 }
507507
508508 private void fullyPopulateCaches (final int userHandle ) {
509- DatabaseHelper dbHelper = mOpenHelpers .get (userHandle );
509+ DatabaseHelper dbHelper ;
510+ synchronized (this ) {
511+ dbHelper = mOpenHelpers .get (userHandle );
512+ }
513+ if (dbHelper == null ) {
514+ // User is gone.
515+ return ;
516+ }
510517 // Only populate the globals cache once, for the owning user
511518 if (userHandle == UserHandle .USER_OWNER ) {
512519 fullyPopulateCache (dbHelper , TABLE_GLOBAL , sGlobalCache );
@@ -611,10 +618,15 @@ private DatabaseHelper getOrEstablishDatabase(int callingUser) {
611618
612619 long oldId = Binder .clearCallingIdentity ();
613620 try {
614- DatabaseHelper dbHelper = mOpenHelpers .get (callingUser );
621+ DatabaseHelper dbHelper ;
622+ synchronized (this ) {
623+ dbHelper = mOpenHelpers .get (callingUser );
624+ }
615625 if (null == dbHelper ) {
616626 establishDbTracking (callingUser );
617- dbHelper = mOpenHelpers .get (callingUser );
627+ synchronized (this ) {
628+ dbHelper = mOpenHelpers .get (callingUser );
629+ }
618630 }
619631 return dbHelper ;
620632 } finally {
You can’t perform that action at this time.
0 commit comments