Dennis Duda
fc63ba8b52
fix(napi): some of the unsoundness in Buffer
( #1294 )
...
* fix leaked napi refcount in `Buffer` when cloning
Cloning unconditionally increased the refcount in `Buffer::clone`, but only called `napi_reference_unref` on dropping the last Buffer (the one with `strong_count == 1`). This means that the refcount will never drop back to zero after cloning, leaking the Buffer.
This commit changes it to also unconditionally unref the buffer.
* fix multiple sources of UB in `Buffer`
- `slice::from_raw_parts` may never be created with a null pointer, but `napi_get_buffer_info` was not sufficiently checked → UB when passing an empty Buffer
- `&'static mut [u8],` is invalid, as it certainly doesn't live for `'static`
Switching to `NonNull<u8>` and a `len` field fixes both of these.
- I also don't really understand how the `impl ToNapiValue for &mut Buffer` could have been sound. It creates an entirely new `Arc`, but reuses the same `Vec` allocation, leading to... a double free of the `Vec` on drop? I have replaced it with a simple call to `clone` instead.
* remove overcomplicated bool and drop impl
As far as I can tell, by just removing the bool and letting the drop code do its thing we clean up correctly in all cases. Because `napi_create_external_buffer` gets an owned `Buffer` attached to it via the Box, we can rely on `from_raw` retrieving it in the `drop_buffer` function.
2022-09-05 13:04:43 +08:00
mat-if
26f6c926d3
chore(napi-derive): pin minimum usable version of dependency syn ( #1293 )
2022-09-01 10:50:48 +08:00
LongYinan
76fd7b7526
Merge pull request #1291 from napi-rs/fix-this-types
...
fix(napi-derive): should not generate this types for Constructor/Getter/Setter
2022-08-30 17:04:23 +08:00
LongYinan
32a039aad0
fix(napi-derive): should not generate this types for Constructor/Getter/Setter
2022-08-30 16:39:51 +08:00
LongYinan
7e3b1ef330
Merge pull request #1290 from napi-rs/zst
...
fix(napi): remove previous reference if value_ref existed
2022-08-25 22:17:47 +08:00
LongYinan
525d881590
fix(napi): remove previous reference if value_ref existed
...
Usually happens while using ZST
2022-08-25 21:51:06 +08:00
LongYinan
767c040d94
Release independent packages
...
- napi@2.9.0
- napi-derive@2.9.0
2022-08-23 22:27:53 +08:00
LongYinan
58f0d82554
Merge pull request #1287 from napi-rs/upgrade-dependencies
...
chore: upgrade npm dependencies
2022-08-23 21:00:46 +08:00
LongYinan
184c4af588
chore: upgrade npm dependencies
2022-08-23 20:18:25 +08:00
LongYinan
4153c03a9f
Merge pull request #1286 from napi-rs/f32-to-napi-value
...
feat(napi): implement ToNapiValue for f32
2022-08-23 17:03:01 +08:00
LongYinan
f7c00c9a90
feat(napi): implement as_unknown and validate for Either types ( #1285 )
2022-08-23 17:02:51 +08:00
LongYinan
49ec8917df
feat(napi): implement as_object and validate for ClassInstance ( #1284 )
2022-08-23 17:02:41 +08:00
LongYinan
36275438ad
chore(napi): misc cleanup
2022-08-23 16:18:08 +08:00
LongYinan
03e80361d9
feat(napi): implement ToNapiValue for f32
2022-08-23 16:18:08 +08:00
messense
99e17c7294
fix(napi): segfault when ThreadsafeFunction
's callback closure captures data ( #1281 )
2022-08-20 22:40:26 +08:00
LongYinan
b7a3103f0c
feat(napi-derive): catch_unwind attribute ( #1280 )
2022-08-19 23:36:36 +08:00
Fy
bc69e15efb
fix(napi-derive): fix macro expansion naming shadow ( #1278 )
...
Co-authored-by: fengyu <fengyu.shelby@bytedance.com>
2022-08-19 11:05:09 +08:00
LongYinan
5ba603459b
Release independent packages
...
napi@2.8.0
napi-derive@2.8.0
2022-08-17 23:12:05 +08:00
LongYinan
40d46f4b2a
Merge pull request #1275 from napi-rs/anyhow
...
feat(napi): `error_anyhow` feature
2022-08-17 23:10:40 +08:00
iuser
13996c1864
feat(napi): error_anyhow feature
2022-08-17 22:50:52 +08:00
LongYinan
c4eb51b509
Merge pull request #1274 from napi-rs/weak-reference
...
feat(napi): add get and get_mut method on `WeakReference`
2022-08-17 22:12:02 +08:00
LongYinan
1cd4fda01e
feat(napi): add get and get_mut method on WeakReference
2022-08-17 21:29:03 +08:00
LongYinan
242b292079
Merge pull request #1273 from napi-rs/do-not-restrict-this
...
feat(napi-derive): support inject This<Value> into raw function
2022-08-17 18:46:53 +08:00
LongYinan
528b1d21cb
style: clippy fix
2022-08-17 18:16:01 +08:00
LongYinan
0ef482c6ca
feat(napi-derive): support inject This<Value> into raw function
2022-08-17 18:16:00 +08:00
LongYinan
5030cfb8fb
Merge pull request #1272 from napi-rs/support-instanceof
...
feat(napi-derive): implement instance_of for Class
2022-08-17 16:00:46 +08:00
LongYinan
711372e175
feat(napi-derive): implement instance_of for Class
2022-08-17 15:18:43 +08:00
LongYinan
8d0045f5b6
Merge pull request #1270 from napi-rs/custom-finalize
...
feat(napi): allow implement custom finalize logic for Class
2022-08-17 14:25:51 +08:00
LongYinan
2385b52a72
feat(napi): allow implement custom finalize logic for Class
2022-08-17 13:24:40 +08:00
LongYinan
304bddeae9
chore: publish
...
- @napi-rs/cli@2.11.4
2022-08-13 01:11:37 +08:00
LongYinan
6bd682279d
Merge pull request #1263 from xhuz/main
...
feat(napi): support rust array to js array
2022-08-12 21:04:43 +08:00
huzz
fd191a4586
feat(napi): support rust array to js array
2022-08-12 17:53:36 +08:00
LongYinan
8784ed9459
Merge pull request #1265 from liby/feature/update-ci-template
...
chore(napi): use recommended `vmactions/freebsd-vm@v0`
2022-08-12 17:40:10 +08:00
LongYinan
2d2e4425b4
Merge pull request #1266 from napi-rs/zig-cross-fix
...
fix(cli): zig cross to *-apple-darwin target
2022-08-12 17:39:49 +08:00
LongYinan
d9f5245432
ci: fix FreeBSD check CI
2022-08-12 16:56:45 +08:00
LongYinan
14aab065e7
fix(cli): zig cross to *-apple-darwin target
2022-08-12 16:52:21 +08:00
LongYinan
aad4712e0f
chore: publish
...
- @napi-rs/cli@2.11.3
2022-08-12 16:20:22 +08:00
LongYinan
1d1ef3d69e
fix(cli): ignore preinstall scripts on FreeBSD while installing yarn
2022-08-12 16:19:59 +08:00
Bryan Lee
b13d6b68a1
chore(napi): use recommended vmactions/freebsd-vm@v0
2022-08-12 14:43:16 +08:00
LongYinan
c6aeb06e04
chore: publish
...
- @napi-rs/cli@2.11.2
2022-08-12 13:26:17 +08:00
LongYinan
9b9cd5d23b
fix(cli): npm i -g flag is deprecated
2022-08-12 13:25:45 +08:00
LongYinan
4cd1c3aaf8
chore: publish
...
- @napi-rs/cli@2.11.1
2022-08-09 13:26:02 +08:00
LongYinan
0db6ae1282
style(cli): update lib.rs
2022-08-09 13:25:22 +08:00
LongYinan
1cf5a0dc75
fix(cli): add .yarn and __test__ folder to .npmignore
2022-08-09 13:24:21 +08:00
LongYinan
8147a9021b
build: fix aarch64 linux musl toolchain
2022-08-09 13:17:52 +08:00
LongYinan
4412c28c6d
chore(napi): enhance error message when unwrap failed from JsObject ( #1259 )
2022-08-07 23:05:49 +08:00
LongYinan
b8f96d517d
chore: publish
...
@napi-rs/cli@2.11.0
2022-08-07 16:08:34 +08:00
LongYinan
a0c7176693
Release independent packages
...
- napi@2.7.0
- napi-derive@2.7.0
2022-08-07 12:51:15 +08:00
LongYinan
cb9239d8dc
fix(napi): either for #[napi(object)] types ( #1258 )
2022-08-07 01:16:28 +08:00
Ivan Enderlin
6a9fdba8b6
feat(napi-derive) Support #[napi(strict)]
on &T
and &mut T
. ( #1238 )
2022-08-06 21:55:35 +08:00