diff options
author | 2022-02-16 04:01:42 -0800 | |
---|---|---|
committer | 2022-02-16 04:01:42 -0800 | |
commit | d00fe1f8aff707d77bb859582582767713712140 (patch) | |
tree | aa38856eba377e83e8698c0fc5b830214447dc65 | |
parent | 5a80a2e216ded1d37c18ff54d9d3fa44e1bacc77 (diff) | |
download | bun-d00fe1f8aff707d77bb859582582767713712140.tar.gz bun-d00fe1f8aff707d77bb859582582767713712140.tar.zst bun-d00fe1f8aff707d77bb859582582767713712140.zip |
[bun.js] Handle UTF-16 strings in `StringOrBuffer`
-rw-r--r-- | src/javascript/jsc/node/node_fs.zig | 4 | ||||
-rw-r--r-- | src/javascript/jsc/node/types.zig | 14 |
2 files changed, 5 insertions, 13 deletions
diff --git a/src/javascript/jsc/node/node_fs.zig b/src/javascript/jsc/node/node_fs.zig index 444480d2c..42058f1d3 100644 --- a/src/javascript/jsc/node/node_fs.zig +++ b/src/javascript/jsc/node/node_fs.zig @@ -1179,7 +1179,7 @@ const Arguments = struct { if (exception.* != null) return null; - const buffer = StringOrBuffer.fromJS(ctx.ptr(), arguments.next() orelse { + const buffer = StringOrBuffer.fromJS(ctx.ptr(), arguments.arena.allocator(), arguments.next() orelse { if (exception.* == null) { JSC.throwInvalidArguments( "data is required", @@ -1490,7 +1490,7 @@ const Arguments = struct { if (exception.* != null) return null; - const data = StringOrBuffer.fromJS(ctx.ptr(), arguments.next() orelse { + const data = StringOrBuffer.fromJS(ctx.ptr(), arguments.arena.allocator(), arguments.next() orelse { if (exception.* == null) { JSC.throwInvalidArguments( "data is required", diff --git a/src/javascript/jsc/node/types.zig b/src/javascript/jsc/node/types.zig index b02d5ef89..e5d905363 100644 --- a/src/javascript/jsc/node/types.zig +++ b/src/javascript/jsc/node/types.zig @@ -146,19 +146,11 @@ pub const StringOrBuffer = union(Tag) { }; } - pub fn fromJS(global: *JSC.JSGlobalObject, value: JSC.JSValue, exception: JSC.C.ExceptionRef) ?StringOrBuffer { + pub fn fromJS(global: *JSC.JSGlobalObject, allocator: std.mem.Allocator, value: JSC.JSValue, exception: JSC.C.ExceptionRef) ?StringOrBuffer { return switch (value.jsType()) { JSC.JSValue.JSType.String, JSC.JSValue.JSType.StringObject, JSC.JSValue.JSType.DerivedStringObject, JSC.JSValue.JSType.Object => { - var zig_str = JSC.ZigString.init(""); - value.toZigString(&zig_str, global); - // if (zig_str.len == 0) { - // JSC.throwInvalidArguments("Expected string to have length > 0", .{}, global.ref(), exception); - // return null; - // } - - return StringOrBuffer{ - .string = zig_str.slice(), - }; + var zig_str = value.toSlice(global, allocator); + return StringOrBuffer{ .string = zig_str.slice() }; }, JSC.JSValue.JSType.ArrayBuffer => StringOrBuffer{ .buffer = Buffer.fromArrayBuffer(global.ref(), value, exception), |