Revision: 23972
http://sourceforge.net/p/bibdesk/svn/23972
Author: hofman
Date: 2019-07-08 22:01:31 +0000 (Mon, 08 Jul 2019)
Log Message:
-----------
Don't save bibtex with items containing too many fields, as that will crash
bibdesk when opening because btparse runs out of memory
Modified Paths:
--------------
trunk/bibdesk/BibItem.m
trunk/bibdesk/English.lproj/Localizable.strings
Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m 2019-07-08 15:20:58 UTC (rev 23971)
+++ trunk/bibdesk/BibItem.m 2019-07-08 22:01:31 UTC (rev 23972)
@@ -1820,6 +1820,7 @@
NSData *lineSeparator = [@",\n\t" dataUsingEncoding:encoding];
NSData *fieldValueSeparator = [@" = " dataUsingEncoding:encoding];
+ NSUInteger numFields = 0;
for (field in keys) {
@@ -1826,6 +1827,7 @@
if (isOK == NO) break;
if (NO == dropInternal || [knownKeys containsObject:field]) {
+ numFields++;
value = [pubFields objectForKey:field];
@@ -1868,10 +1870,17 @@
value = [self filesAsBibTeXFragmentRelativeToPath:basePath];
// assumes encoding is ascii-compatible, but btparse does as well
if (value) [data appendDataFromString:value encoding:encoding
error:&error];
+ numFields += [[self files] count];
}
if(isOK)
isOK = [data appendDataFromString:@"}" encoding:encoding error:&error];
+ // btparse apparently runs out of memory and crashes with 98+ fields
+ if (isOK && numFields >= 98) {
+ error = [NSError mutableLocalErrorWithCode:kBDSKDocumentSaveError
localizedDescription:NSLocalizedString(@"Too many fields", @"Error
description")];
+ [error setValue:[NSString stringWithFormat:NSLocalizedString(@"Too
many fields for item with cite key \"%@\".", @"Error informative text"), [self
citeKey]] forKey:NSLocalizedRecoverySuggestionErrorKey];
+ }
+
if(isOK == NO && outError)
*outError = error;
Modified: trunk/bibdesk/English.lproj/Localizable.strings
===================================================================
(Binary files differ)
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