Skip to content

Commit 19bbbb2

Browse files
committed
Merge branch 'release/v0.3.1'
2 parents b8f2007 + ea8e5e6 commit 19bbbb2

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ As listed in [ICU’s user guide](http://userguide.icu-project.org/conversion/de
7777

7878
## Release history
7979

80+
- v0.3.1 (2017-03-10):
81+
- Fix continuing execution even after an error occurred.
82+
- Fix memory leak by properly closing ICU’s charset detector.
8083
- v0.3.0 (2017-01-28): Add support for Node.js v6 and v7 and
8184
drop support for Node.js v0.10 and v0.12.
8285
- v0.2.1 (2015-12-28): Republish because v0.2.0 didn’t include `config.gypi`.

icuWrapper.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ NAN_METHOD(DetectCharacterEncoding) {
1616

1717
if(U_FAILURE(errorCode)) {
1818
Nan::ThrowError("Failed to open ICU charset detector.");
19+
return;
1920
}
2021

2122
ucsdet_setText(
@@ -27,31 +28,40 @@ NAN_METHOD(DetectCharacterEncoding) {
2728

2829
if(U_FAILURE(errorCode)) {
2930
Nan::ThrowError("Failed to set ICU charset detector’s text.");
31+
ucsdet_close(charsetDetector);
32+
return;
3033
}
3134

3235
charsetMatch = ucsdet_detect(charsetDetector, &errorCode);
3336

3437
if(U_FAILURE(errorCode)) {
3538
Nan::ThrowError("Failed to detect charset.");
39+
ucsdet_close(charsetDetector);
40+
return;
3641
}
3742

3843
const char *charsetName = ucsdet_getName(charsetMatch, &errorCode);
3944

4045
if(U_FAILURE(errorCode)) {
4146
Nan::ThrowError("Failed to get name from charset match.");
47+
ucsdet_close(charsetDetector);
48+
return;
4249
}
4350

4451
int32_t confidence = ucsdet_getConfidence(charsetMatch, &errorCode);
4552

4653
if(U_FAILURE(errorCode)) {
4754
Nan::ThrowError("Failed to get confidence from charset match.");
55+
ucsdet_close(charsetDetector);
56+
return;
4857
}
4958

5059
v8::Local<v8::Object> obj = Nan::New<v8::Object>();
5160
obj->Set(Nan::New<v8::String>("encoding").ToLocalChecked(), Nan::New<v8::String>(charsetName).ToLocalChecked());
5261
obj->Set(Nan::New<v8::String>("confidence").ToLocalChecked(), Nan::New<v8::Number>(confidence));
5362

5463
info.GetReturnValue().Set(obj);
64+
ucsdet_close(charsetDetector);
5565
}
5666

5767
void Init(v8::Local<v8::Object> exports) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "detect-character-encoding",
3-
"version": "0.3.0",
3+
"version": "0.3.1",
44
"author": "Jakob Krigovsky <[email protected]>",
55
"description": "Detect character encoding using ICU.",
66
"repository": {

0 commit comments

Comments
 (0)