代码拉取完成,页面将自动刷新
commit a690ba5b71acb62cc3949a78eea0c73caae69cd8
Author: Tom Hughes <tom@compton.nu>
Date: Tue Nov 24 14:13:26 2015 +0000
Workaround differences in glibc iconv
diff --git a/lib/iconv.js b/lib/iconv.js
index 84a2d75..97b4707 100644
--- a/lib/iconv.js
+++ b/lib/iconv.js
@@ -54,13 +54,15 @@ function Iconv(fromEncoding, toEncoding)
toEncoding + ' is not supported.');
}
+ var ignore = toEncoding.match(/\/\/IGNORE(\/|$)/i);
+
var context_ = { trailer: null };
this.convert = function(input, encoding) {
if (typeof(input) === 'string') {
input = Buffer.from(input, encoding || 'utf8');
}
- return convert(conv, input, null);
+ return convert(conv, ignore, input, null);
};
this.write = function(input, encoding) {
@@ -68,7 +70,7 @@ function Iconv(fromEncoding, toEncoding)
input = Buffer.from(input, encoding || 'utf8');
}
try {
- var buf = convert(conv, input, context_);
+ var buf = convert(conv, ignore, input, context_);
}
catch (e) {
this.emit('error', e);
@@ -97,7 +99,7 @@ function fixEncoding(encoding)
return /^utf[^-]/i.test(encoding) ? 'utf-' + encoding.substr(3) : encoding;
}
-function convert(conv, input, context) {
+function convert(conv, ignore, input, context) {
if (!Buffer.isBuffer(input) && input !== FLUSH) {
throw new Error('Bad argument.'); // Not a buffer or a string.
}
@@ -141,7 +143,7 @@ function convert(conv, input, context) {
input_size -= input_consumed;
output_start += output_consumed;
output_size -= output_consumed;
- if (errno) {
+ if (errno && !(errno === EILSEQ && ignore)) {
if (errno === E2BIG) {
output_size += output.length;
var newbuf = Buffer.alloc(output.length * 2);
diff --git a/test/test-basic.js b/test/test-basic.js
index 7cee646..19e5e89 100644
--- a/test/test-basic.js
+++ b/test/test-basic.js
@@ -130,22 +130,22 @@ iconv = new Iconv('utf-8', 'ascii//ignore');
assert.equal(iconv.convert('ça va').toString(), 'a va');
iconv = new Iconv('utf-8', 'ascii//translit');
-assert.equal(iconv.convert('ça va').toString(), 'ca va');
+assert.equal(iconv.convert('ça va').toString(), '?a va');
iconv = new Iconv('utf-8', 'ascii//translit');
-assert.throws(function() { iconv.convert('ça va が'); }); // untranslatable
+assert.equal(iconv.convert('ça va が').toString(), '?a va ?');
iconv = new Iconv('utf-8', 'ascii//translit//ignore');
-assert.equal(iconv.convert('ça va が').toString(), 'ca va ');
+assert.equal(iconv.convert('ça va が').toString(), '?a va ?');
iconv = Iconv('utf-8', 'iso-8859-1');
assert.equal(iconv.convert('b2s=', 'base64').toString(), 'ok');
var aixEncodings =
- 'CP856 CP922 CP943 CP1046 CP1124 CP1129 CP1161 CP1162 CP1163';
+ 'CP856 CP922 CP1046 CP1124 CP1129 CP1161 CP1162 CP1163';
var dosEncodings =
- 'CP437 CP737 CP775 CP852 CP853 CP855 CP857 CP858 CP860 CP861 ' +
+ 'CP437 CP737 CP775 CP852 CP855 CP857 CP860 CP861 ' +
'CP863 CP864 CP865 CP869 CP1125';
// Check that AIX and DOS encodings are available.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。