Revision: 27156
http://sourceforge.net/p/bibdesk/svn/27156
Author: hofman
Date: 2021-11-25 15:29:52 +0000 (Thu, 25 Nov 2021)
Log Message:
-----------
Always check whether edited row is valid
Modified Paths:
--------------
trunk/bibdesk/BDSKDocumentInfoWindowController.m
trunk/bibdesk/BDSKEditor.m
trunk/bibdesk/BDSKMacroWindowController.m
trunk/bibdesk/BDSKTypeInfoEditor.m
trunk/bibdesk/BibPref_Defaults.m
trunk/bibdesk/BibPref_Export.m
Modified: trunk/bibdesk/BDSKDocumentInfoWindowController.m
===================================================================
--- trunk/bibdesk/BDSKDocumentInfoWindowController.m 2021-11-25 15:09:06 UTC
(rev 27155)
+++ trunk/bibdesk/BDSKDocumentInfoWindowController.m 2021-11-25 15:29:52 UTC
(rev 27156)
@@ -147,6 +147,9 @@
- (IBAction)changeKey:(id)sender {
NSInteger row = [tableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSString *key = [keys objectAtIndex:row];
NSString *value = [[[info objectForKey:key] retain] autorelease];
NSString *newKey = [sender objectValue];
@@ -160,6 +163,9 @@
- (IBAction)changeValue:(id)sender {
NSInteger row = [tableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSString *key = [keys objectAtIndex:row];
NSString *value = [info objectForKey:key];
NSString *newValue = [sender objectValue];
Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m 2021-11-25 15:09:06 UTC (rev 27155)
+++ trunk/bibdesk/BDSKEditor.m 2021-11-25 15:29:52 UTC (rev 27156)
@@ -1141,6 +1141,9 @@
- (IBAction)changeValue:(id)sender {
NSInteger row = [tableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSString *field = [fields objectAtIndex:row];
NSString *oldValue = [publication valueOfField:field] ?: @"";
NSString *value = [sender objectValue] ?: @"";
Modified: trunk/bibdesk/BDSKMacroWindowController.m
===================================================================
--- trunk/bibdesk/BDSKMacroWindowController.m 2021-11-25 15:09:06 UTC (rev
27155)
+++ trunk/bibdesk/BDSKMacroWindowController.m 2021-11-25 15:29:52 UTC (rev
27156)
@@ -365,7 +365,7 @@
NSString *object = [sender objectValue];
// do nothing if there was no change.
- if ([key isEqualToString:object])
+ if ([key isEqualToString:object] || row == -1)
return;
NSIndexSet *rowIndexes = [NSIndexSet indexSetWithIndex:row];
@@ -424,6 +424,9 @@
if ([undoMan isUndoing] || [undoMan isRedoing]) return;
NSInteger row = [tableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSArray *arrangedMacros = [arrayController arrangedObjects];
NSParameterAssert(row >= 0 && row < (NSInteger)[arrangedMacros count]);
NSDictionary *macroDefinitions = [macroResolver macroDefinitions];
Modified: trunk/bibdesk/BDSKTypeInfoEditor.m
===================================================================
--- trunk/bibdesk/BDSKTypeInfoEditor.m 2021-11-25 15:09:06 UTC (rev 27155)
+++ trunk/bibdesk/BDSKTypeInfoEditor.m 2021-11-25 15:29:52 UTC (rev 27156)
@@ -374,18 +374,20 @@
- (IBAction)changeType:(id)sender {
NSInteger row = [typeTableView rowForView:sender];
- // NSDictionary copies its keys, so types may be the only thing retaining
oldValue (see bug #1596532)
- NSString *oldValue = [[[types objectAtIndex:row] retain] autorelease];
- NSString *newValue = [[sender stringValue] entryType];
- if (NO == [newValue isEqualToString:oldValue] &&
- NO == [types containsObject:newValue]) {
-
- [types replaceObjectAtIndex:row withObject:newValue];
- [fieldsForTypesDict setObject:[fieldsForTypesDict
objectForKey:oldValue] forKey:newValue];
- [fieldsForTypesDict removeObjectForKey:oldValue];
- [self setCurrentType:newValue];
-
- [self setDocumentEdited:YES];
+ if (row >= 0) {
+ // NSDictionary copies its keys, so types may be the only thing
retaining oldValue (see bug #1596532)
+ NSString *oldValue = [[[types objectAtIndex:row] retain] autorelease];
+ NSString *newValue = [[sender stringValue] entryType];
+ if (NO == [newValue isEqualToString:oldValue] &&
+ NO == [types containsObject:newValue]) {
+
+ [types replaceObjectAtIndex:row withObject:newValue];
+ [fieldsForTypesDict setObject:[fieldsForTypesDict
objectForKey:oldValue] forKey:newValue];
+ [fieldsForTypesDict removeObjectForKey:oldValue];
+ [self setCurrentType:newValue];
+
+ [self setDocumentEdited:YES];
+ }
}
}
Modified: trunk/bibdesk/BibPref_Defaults.m
===================================================================
--- trunk/bibdesk/BibPref_Defaults.m 2021-11-25 15:09:06 UTC (rev 27155)
+++ trunk/bibdesk/BibPref_Defaults.m 2021-11-25 15:29:52 UTC (rev 27156)
@@ -505,6 +505,9 @@
- (IBAction)changeFieldName:(id)sender {
NSInteger row = [defaultFieldsTableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSString *field = [sender objectValue];
NSString *oldField = [[customFieldsArray objectAtIndex:row]
objectForKey:FIELD_KEY];
@@ -535,6 +538,9 @@
- (IBAction)changeFieldIsDefault:(id)sender {
NSInteger row = [defaultFieldsTableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSNumber *isDefault = [sender objectValue];
NSNumber *oldIsDefault = [[customFieldsArray objectAtIndex:row]
objectForKey:DEFAULT_KEY];
@@ -547,6 +553,9 @@
- (IBAction)changeGlobalMacroFile:(id)sender {
NSInteger row = [globalMacroFilesTableView rowForView:sender];
+ if (row == -1)
+ return;
+
NSString *path = [sender objectValue];
NSString *oldPath = [globalMacroFiles objectAtIndex:row];
Modified: trunk/bibdesk/BibPref_Export.m
===================================================================
--- trunk/bibdesk/BibPref_Export.m 2021-11-25 15:09:06 UTC (rev 27155)
+++ trunk/bibdesk/BibPref_Export.m 2021-11-25 15:29:52 UTC (rev 27156)
@@ -286,6 +286,9 @@
- (IBAction)changeName:(id)sender {
NSInteger row = [outlineView rowForView:sender];
+ if (row == -1)
+ return;
+
id item = [outlineView itemAtRow:row];
NSString *name = [sender objectValue];
NSString *oldName = [item valueForKey:BDSKTemplateNameString];
@@ -299,6 +302,9 @@
- (IBAction)changeRole:(id)sender {
NSInteger row = [outlineView rowForView:sender];
+ if (row == -1)
+ return;
+
id item = [outlineView itemAtRow:row];
NSString *role = [BDSKTemplate unlocalizedRoleString:[sender objectValue]];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit