Fix UB caused by casting a Rust fn ptr to a *c_void (BMO bug #1351497) #81
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Use Option<extern fn()> to represent potentially-null function pointer.
This addresses https://bugzilla.mozilla.org/show_bug.cgi?id=1351497, which was filed as a rustc bug in rust-lang/rust#40913, but revealed to be undefined behaviour that happened to work with earlier compiler versions.
As the comment removed in this patch describes, the only reason this code existed was to work around a limitation of rusty-cheddar.
Not sure what to do about the rusty-cheddar issue. We can patch the generated header manually (by replacing the bogus mp4parse_io member
Option read
withintptr_t (*read)(uint8_t* buffer, uintptr_t size, void* userdata)
for now, but that's not an ideal solution.