| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 1d8cc61 commit 1381541
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -286,9 +286,11 @@ void BindingData::DecodeLatin1(const FunctionCallbackInfo<Value>& args) { | |||
| 286 | 286 | env->isolate(), "The encoded data was not valid for encoding latin1"); | |
| 287 | 287 | } | |
| 288 | 288 | ||
| 289 | - Local<Object> buffer_result = | ||
| 290 | - node::Buffer::Copy(env, result.c_str(), written).ToLocalChecked(); | ||
| 291 | - args.GetReturnValue().Set(buffer_result); | ||
| 289 | + Local<String> output = | ||
| 290 | + String::NewFromUtf8( | ||
| 291 | + env->isolate(), result.c_str(), v8::NewStringType::kNormal, written) | ||
| 292 | + .ToLocalChecked(); | ||
| 293 | + args.GetReturnValue().Set(output); | ||
| 292 | 294 | } | |
| 293 | 295 | ||
| 294 | 296 | } // namespace encoding_binding | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -26,7 +26,7 @@ bool RunDecodeLatin1(Environment* env, | |||
| 26 | 26 | return false; | |
| 27 | 27 | } | |
| 28 | 28 | ||
| 29 | - *result = try_catch.Exception(); | ||
| 29 | + *result = args[0]; | ||
| 30 | 30 | return true; | |
| 31 | 31 | } | |
| 32 | 32 | ||
@@ -151,5 +151,26 @@ TEST_F(EncodingBindingTest, DecodeLatin1_BOMPresent) { | |||
| 151 | 151 | EXPECT_STREQ(*utf8_result, "Áéó"); | |
| 152 | 152 | } | |
| 153 | 153 | ||
| 154 | + TEST_F(EncodingBindingTest, DecodeLatin1_ReturnsString) { | ||
| 155 | + Environment* env = CreateEnvironment(); | ||
| 156 | + Isolate* isolate = env->isolate(); | ||
| 157 | + HandleScope handle_scope(isolate); | ||
| 158 | + | ||
| 159 | + const uint8_t latin1_data[] = {0xC1, 0xE9, 0xF3}; | ||
| 160 | + Local<ArrayBuffer> ab = ArrayBuffer::New(isolate, sizeof(latin1_data)); | ||
| 161 | + memcpy(ab->GetBackingStore()->Data(), latin1_data, sizeof(latin1_data)); | ||
| 162 | + | ||
| 163 | + Local<Uint8Array> array = Uint8Array::New(ab, 0, sizeof(latin1_data)); | ||
| 164 | + Local<Value> args[] = {array}; | ||
| 165 | + | ||
| 166 | + Local<Value> result; | ||
| 167 | + ASSERT_TRUE(RunDecodeLatin1(env, args, false, false, &result)); | ||
| 168 | + | ||
| 169 | + ASSERT_TRUE(result->IsString()); | ||
| 170 | + | ||
| 171 | + String::Utf8Value utf8_result(isolate, result); | ||
| 172 | + EXPECT_STREQ(*utf8_result, "Áéó"); | ||
| 173 | + } | ||
| 174 | + | ||
| 154 | 175 | } // namespace encoding_binding | |
| 155 | 176 | } // namespace node | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,17 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + const common = require('../common'); | ||
| 4 | + | ||
| 5 | + const test = require('node:test'); | ||
| 6 | + const assert = require('node:assert'); | ||
| 7 | + | ||
| 8 | + test('TextDecoder correctly decodes windows-1252 encoded data', { skip: !common.hasIntl }, () => { | ||
| 9 | + const latin1Bytes = new Uint8Array([0xc1, 0xe9, 0xf3]); | ||
| 10 | + | ||
| 11 | + const expectedString = 'Áéó'; | ||
| 12 | + | ||
| 13 | + const decoder = new TextDecoder('windows-1252'); | ||
| 14 | + const decodedString = decoder.decode(latin1Bytes); | ||
| 15 | + | ||
| 16 | + assert.strictEqual(decodedString, expectedString); | ||
| 17 | + }); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments