Re-introduce ns{Fixed,}{C,}StringRepr

RESOLVED FIXED in Firefox 54

Status

()

defect
RESOLVED FIXED
3 years ago
3 years ago

People

(Reporter: Nika, Assigned: Nika)

Tracking

unspecified
mozilla54
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox54 fixed)

Details

Attachments

(1 attachment)

Unfortunately, we still need to have a representation of ns{Fixed,}{C,}StringRepr in tree, as some FFI structs need to control and run their destructors independently. Not providing a drop-implementation-free version of these types means that they are unusable in those situations, such as in the style bindings.

This may be avoidable when `union` is stabilized in rust, as that will allow for structs which contain a value of a type to control whether or not that type's destructor gets run. (https://github.com/rust-lang/rust/issues/32836)

This patch will pretty-much be a backout of bug 1316696.
Comment on attachment 8836901 [details] [diff] [review]
Re-introduce the ns[C]StringRepr type for use in bindings with custom destructor logic

Review of attachment 8836901 [details] [diff] [review]:
-----------------------------------------------------------------

rs=me on the presumption that this is a revert of the backout.
Attachment #8836901 - Flags: review?(nfroyd) → review+
Comment on attachment 8836901 [details] [diff] [review]
Re-introduce the ns[C]StringRepr type for use in bindings with custom destructor logic

This isn't exactly just a backout, as I still wanted ns[C]String to be `#[repr(C)]` which was also added in that patch, and I wanted to verify that both the ns[C]StringRepr and ns[C]String had the correct layout. 

I'd appreciate it if you could look over the changes a bit more closely :).
Attachment #8836901 - Flags: review+ → review?(nfroyd)
Comment on attachment 8836901 [details] [diff] [review]
Re-introduce the ns[C]StringRepr type for use in bindings with custom destructor logic

Review of attachment 8836901 [details] [diff] [review]:
-----------------------------------------------------------------

::: xpcom/rust/nsstring/src/lib.rs
@@ +843,5 @@
> +                                  align: *mut usize,
> +                                  offset: *mut usize) {
> +                unsafe {
> +                    // Create a temporary value of type T to get offsets, sizes
> +                    // and aligns off of

I think "...and alignments from" reads better, WDYT?
Attachment #8836901 - Flags: review?(nfroyd) → review+
Pushed by michael@thelayzells.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/7ecbacf4e84c
Re-introduce the ns[C]StringRepr type for use in bindings with custom destructor logic, r=froydnj
https://hg.mozilla.org/mozilla-central/rev/7ecbacf4e84c
https://hg.mozilla.org/mozilla-central/rev/7045bd028af0
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla54
You need to log in before you can comment on or make changes to this bug.