The result of CString::into_raw() is not safe to free
with free() except under finicky and fragile circumstances
that we definitely don't meet right now.
This was missed in
be583a34a3815c2c10e86094ab0610e4b7f9c869.
--- /dev/null
+ o Minor bugfixes (rust):
+ - Return a string that can be safely freed by C code, not one created by
+ the rust allocator, in protover_all_supported(). Fixes bug 27740; bugfix
+ on 0.3.3.1-alpha.
if missing_out.is_null() {
return 0;
}
- let c_unsupported: CString = match CString::new(unsupported.to_string()) {
- Ok(n) => n,
- Err(_) => return 1,
- };
-
- let ptr = c_unsupported.into_raw();
+ let ptr = allocate_and_copy_string(&unsupported.to_string());
unsafe { *missing_out = ptr };
return 0;