Buffer.alloc with non-buffer fill
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript, nodejs
- Lĩnh vực
- web-dev
Hướng nghiên cứu
Bắt đầu bằng cách so sánh Buffer.alloc(size[, fill[, encoding]]) với triển khai và các bài kiểm thử buffer hiện tại của Node, đặc biệt là trường hợp fill của Uint8Array được示示 ở đây. Xem lại cuộc thảo luận liên quan trong #177 và xác định những bài kiểm thử buffer nào của Node có liên quan; hoàn tất có nghĩa là các byte Uint8Array từ 0 đến 255 được giữ nguyên và hành vi này được bao phủ bởi các bài kiểm thử.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Hi @feross!
If you pass a <Uint8Array> as the fill to Buffer.alloc(size[, fill[, encoding]]) node (v14.15.1) will copy those bytes verbatim into the buffer, whereas with the ferros/buffer package, it does something and the end result is that the resulting buffer is filled with strange data.
const input = [ 247, 108, 225 ]
const typedArr = new Uint8Array(input)
const output = Array.from(Buffer.alloc(typedArr.byteLength, typedArr))
// node:
// [ 247, 108, 225 ] (matches input, expected)
// feross/buffer:
// [ 239, 191, 189 ] (???)
It works fine for numbers between 0 and 127, but things get weird once you're out of those bounds (Uint8 should work for numbers between 0 - 255).
Workaround is to pass a Buffer as the fill value:
const output = Array.from(Buffer.alloc(typedArr.byteLength, Buffer.from(typedArr)))
// node:
// [ 247, 108, 225 ] (cool)
// feross/buffer:
// [ 247, 108, 225 ] (cool)
I'd perhaps PR a fix for this specific issue, but I feel like the real problem is that this package needs to be refreshed with the latest buffer code + tests from node, rather than me patching in a specific fix? i.e. Perhaps related to #177. I looked into this briefly and the transform from node looked non-trivial if you haven't done it before.
- Ngôn ngữ chính
- JavaScript
- Star
- 1.9k
- Fork
- 260
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của feross/buffer
-
React Native, unordered_map::at: key not found when passing a Buffer instead of a Uint8ArrayĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
-
Use `DataView`, remove dependency on `ieee754`Có thể làm lại được @dcousens đã nhận 625 ngày trước và không có pull request nào đang mở. Đang mở
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
-
Expose `Buffer#utf8Slice`Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 48/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 38/100
Tất cả issue của feross/buffer
Issue tương tự
-
agent/quality hive/hosted-available-lke648397-260827-5n31 quality testing
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 78/100
jaegertracing/jaeger-ui#4512 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
feedback simulation workshop
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
githubnext/gh-aw-workshop#3857 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
area-clientside-dartpad
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
quarkusio/extensions#3432 ·
Maintainer thường phản hồi trong vòng 1 ngày