From 6c15d2e88be29fb8207235de41838c044c46497d Mon Sep 17 00:00:00 2001 From: Niels Simenon Date: Sat, 7 Jul 2018 00:37:10 +0200 Subject: [PATCH] Calculating filename component limit in bytes rather than characters, preventing 'filename too long' errors when e.g. emojis are used --- src/save/save.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/save/save.js b/src/save/save.js index ee3c270..f8e95cc 100644 --- a/src/save/save.js +++ b/src/save/save.js @@ -3,11 +3,12 @@ const config = require('config'); const fs = require('fs-extra'); const path = require('path'); +const truncate = require('../utils/truncate-bytes'); function limitPathElement(element, limit) { return element.split('/').map((component) => { - if (config.library.truncate && component.length > limit) { - return component.slice(0, limit - config.library.truncate.truncator.length) + config.library.truncate.truncator; + if (config.library.truncate && Buffer.from(component).length > limit) { + return truncate(component, limit - config.library.truncate.truncator.length) + config.library.truncate.truncator; } return component;