commit 2194dff7a49f268f66af9a9db525629087ff5215
parent ca9a7c685eae3df9aa1769c8511ea6402b564cae
Author: Dan Stillman <dstillman@zotero.org>
Date: Fri, 19 Jan 2018 12:57:45 -0500
Fix startup hang if note is null in database
Diffstat:
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/chrome/content/zotero/xpcom/data/items.js b/chrome/content/zotero/xpcom/data/items.js
@@ -415,21 +415,31 @@ Zotero.Items = function() {
// Convert non-HTML notes on-the-fly
if (note !== "") {
- if (!note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)) {
- note = Zotero.Utilities.htmlSpecialChars(note);
- note = Zotero.Notes.notePrefix + '<p>'
- + note.replace(/\n/g, '</p><p>')
- .replace(/\t/g, ' ')
- .replace(/ /g, ' ')
- + '</p>' + Zotero.Notes.noteSuffix;
- note = note.replace(/<p>\s*<\/p>/g, '<p> </p>');
- notesToUpdate.push([item.id, note]);
+ if (typeof note == 'number') {
+ note = '' + note;
+ }
+ if (typeof note == 'string') {
+ if (!note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)) {
+ note = Zotero.Utilities.htmlSpecialChars(note);
+ note = Zotero.Notes.notePrefix + '<p>'
+ + note.replace(/\n/g, '</p><p>')
+ .replace(/\t/g, ' ')
+ .replace(/ /g, ' ')
+ + '</p>' + Zotero.Notes.noteSuffix;
+ note = note.replace(/<p>\s*<\/p>/g, '<p> </p>');
+ notesToUpdate.push([item.id, note]);
+ }
+
+ // Don't include <div> wrapper when returning value
+ let startLen = note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)[0].length;
+ let endLen = 6; // "</div>".length
+ note = note.substr(startLen, note.length - startLen - endLen);
+ }
+ // Clear null notes
+ else {
+ note = '';
+ notesToUpdate.push([item.id, '']);
}
-
- // Don't include <div> wrapper when returning value
- let startLen = note.substr(0, 36).match(/^<div class="zotero-note znv[0-9]+">/)[0].length;
- let endLen = 6; // "</div>".length
- note = note.substr(startLen, note.length - startLen - endLen);
}
item._noteText = note ? note : '';