mirror of
https://github.com/zen-browser/desktop.git
synced 2026-08-19 05:01:33 +00:00
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
diff --git a/toolkit/modules/JSONFile.sys.mjs b/toolkit/modules/JSONFile.sys.mjs
|
|
index 397991e4af8f49b6365d729fc11267b5c1113400..599ed16981aa1f1e9abfee2ad6c1883efd88e0ba 100644
|
|
--- a/toolkit/modules/JSONFile.sys.mjs
|
|
+++ b/toolkit/modules/JSONFile.sys.mjs
|
|
@@ -132,6 +132,7 @@ export function JSONFile(config) {
|
|
this._finalizeInternalBound,
|
|
() => ({ sanitizedBasename: this.sanitizedBasename })
|
|
);
|
|
+ this._useSizeHints = config.useSizeHints ?? false;
|
|
}
|
|
|
|
JSONFile.prototype = {
|
|
@@ -423,11 +424,15 @@ JSONFile.prototype = {
|
|
}
|
|
|
|
try {
|
|
- await IOUtils.writeJSON(
|
|
+ if (this._useSizeHints && this._lastSavedSize) {
|
|
+ this._options.lengthHint = Math.ceil(this._lastSavedSize * 1.05);
|
|
+ }
|
|
+ const result = await IOUtils.writeJSON(
|
|
this.path,
|
|
this._data,
|
|
Object.assign({ tmpPath: this.path + ".tmp" }, this._options)
|
|
);
|
|
+ this._lastSavedSize = this._useSizeHints ? result.jsonLength : null;
|
|
} catch (ex) {
|
|
if (typeof this._data.toJSONSafe == "function") {
|
|
// If serialization fails, try fallback safe JSON converter.
|