aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2012-01-11 23:03:33 +0000
committerstuconnolly <stuart02@gmail.com>2012-01-11 23:03:33 +0000
commit24837e4f269c7ad44c555066d7f5d3d9c4d2c139 (patch)
treec2eca971ab873825ea09a444c0c764e32e341baf /Source
parent425a60ca9fe7b7e9883542c80a80328f9b6eb625 (diff)
downloadsequelpro-24837e4f269c7ad44c555066d7f5d3d9c4d2c139.tar.gz
sequelpro-24837e4f269c7ad44c555066d7f5d3d9c4d2c139.tar.bz2
sequelpro-24837e4f269c7ad44c555066d7f5d3d9c4d2c139.zip
Protect against dodgy preference data that may case bounds exceptions when selecting the default favorite in the general preference pane.
Diffstat (limited to 'Source')
-rw-r--r--Source/SPGeneralPreferencePane.h2
-rw-r--r--Source/SPGeneralPreferencePane.m8
-rw-r--r--Source/SPPreferenceController.m2
3 files changed, 7 insertions, 5 deletions
diff --git a/Source/SPGeneralPreferencePane.h b/Source/SPGeneralPreferencePane.h
index 76343a83..a23b6bb8 100644
--- a/Source/SPGeneralPreferencePane.h
+++ b/Source/SPGeneralPreferencePane.h
@@ -42,6 +42,6 @@
- (IBAction)updateDefaultFavorite:(id)sender;
- (void)updateDefaultFavoritePopup;
-- (void)resetDefaultFavoritePopupSelection;
+- (void)updateDefaultFavoritePopupSelection;
@end
diff --git a/Source/SPGeneralPreferencePane.m b/Source/SPGeneralPreferencePane.m
index b87d6ab8..67c43881 100644
--- a/Source/SPGeneralPreferencePane.m
+++ b/Source/SPGeneralPreferencePane.m
@@ -77,15 +77,17 @@
[editMenuItem release];
// Select the default favorite from prefs
- [defaultFavoritePopup selectItemAtIndex:(![prefs boolForKey:SPSelectLastFavoriteUsed]) ? ([prefs integerForKey:SPDefaultFavorite] + 2) : 0];
+ [self updateDefaultFavoritePopupSelection];
}
/**
* Resets the default favorite popup button selection based on the user's preferences.
*/
-- (void)resetDefaultFavoritePopupSelection
+- (void)updateDefaultFavoritePopupSelection
{
- [defaultFavoritePopup selectItemAtIndex:(![prefs boolForKey:SPSelectLastFavoriteUsed]) ? ([prefs integerForKey:SPDefaultFavorite] + 2) : 0];
+ NSUInteger index = [prefs integerForKey:SPDefaultFavorite];
+
+ [defaultFavoritePopup selectItemAtIndex:(![prefs boolForKey:SPSelectLastFavoriteUsed] && index > 0 && index < [[defaultFavoritePopup itemArray] count]) ? index + 2 : 0];
}
#pragma mark -
diff --git a/Source/SPPreferenceController.m b/Source/SPPreferenceController.m
index ed0d0ebe..0d6d46aa 100644
--- a/Source/SPPreferenceController.m
+++ b/Source/SPPreferenceController.m
@@ -145,7 +145,7 @@
// Set the default favorite popup back to preference
if ([sender isKindOfClass:[NSMenuItem class]]) {
- [generalPreferencePane resetDefaultFavoritePopupSelection];
+ [generalPreferencePane updateDefaultFavoritePopupSelection];
}
}