]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
macos: do not quit prefpane unexpectedly
authorMarcio Barbosa <mbarbosa@sinenomine.net>
Fri, 11 Nov 2016 21:21:58 +0000 (13:21 -0800)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 13 Nov 2016 11:17:32 +0000 (06:17 -0500)
If the user opens the OpenAFS preference pane and choose the Mounts
tab, the preference pane crashes.

To fix the problem, do not assume that we can cast a NSdictionary
object to NSMutableDictionary.

Change-Id: I3b5f6cb324a6b53c6b53606f71185f61450ee793
Reviewed-on: https://gerrit.openafs.org/12446
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
src/platform/DARWIN/AFSPreference/AFSBackgrounder/AFSBackgrounderDelegate.m
src/platform/DARWIN/AFSPreference/AFSCommanderPref.m

index d2d81face4944efff419d2cd2f5567dcfa3196b8..b636de954e709dd78095cf952ca143ab334ad80c 100644 (file)
 
        //get link configuration
        NSData *prefData = (NSData*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_LINK_CONFIGURATION, (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-       linkConfiguration = (NSMutableDictionary*)[NSPropertyListSerialization propertyListFromData:prefData
-                                                                                                                                                          mutabilityOption:NSPropertyListMutableContainers
-                                                                                                                                                                                format:nil
-                                                                                                                                                          errorDescription:nil];
+       NSDictionary *linkDict = (NSMutableDictionary*)[NSPropertyListSerialization propertyListFromData:prefData
+                                                                                   mutabilityOption:NSPropertyListMutableContainers
+                                                                                   format:nil
+                                                                                   errorDescription:nil];
+       linkConfiguration = [linkDict mutableCopy];
        
        //get link enabled status
        NSNumber *linkEnabledStatus =  (NSNumber*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_USE_LINK, (CFStringRef)kAfsCommanderID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
index dd6d9bfde806005391e363e04e5d5c28c5f1af2d..1a06b0228962df8def1fa9a43d09b7c62f2de6c9 100644 (file)
 
     //link configuration
     NSData *prefData = (NSData*)CFPreferencesCopyValue((CFStringRef)PREFERENCE_LINK_CONFIGURATION,  (CFStringRef)kAfsCommanderID,  kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-    linkConfiguration = (NSMutableDictionary*)[NSPropertyListSerialization propertyListFromData:prefData
-                                                                          mutabilityOption:NSPropertyListMutableContainers
-                                                                          format:nil
-                                                                          errorDescription:nil];
+    NSDictionary *linkDict = (NSMutableDictionary*)[NSPropertyListSerialization propertyListFromData:prefData
+                                                                               mutabilityOption:NSPropertyListMutableContainers
+                                                                               format:nil
+                                                                               errorDescription:nil];
+    linkConfiguration = [linkDict mutableCopy];
 }
 
 // -------------------------------------------------------------------------------