Skip to content
This repository has been archived by the owner on Jun 8, 2021. It is now read-only.

New release #166

Merged
merged 2 commits into from Oct 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Expand Up @@ -6,7 +6,7 @@ authors = ["The Gtk-rs Project Developers"]
keywords = ["glib", "gio", "gtk-rs", "gnome"]
readme = "README.md"
documentation = "http://gtk-rs.org/docs/gio/"
version = "0.5.0"
version = "0.5.1"
description = "Rust bindings for the Gio library"
repository = "https://github.com/gtk-rs/gio"
build = "build.rs"
Expand Down
6 changes: 4 additions & 2 deletions src/subprocess.rs
Expand Up @@ -22,6 +22,8 @@ use std::ptr;
use futures_core;
#[cfg(feature = "futures")]
use std::boxed::Box as Box_;
#[cfg(any(feature = "v2_40", feature = "dox"))]
use libc::c_char;

pub trait SubprocessExtManual: Sized {
#[cfg(any(feature = "v2_40", feature = "dox"))]
Expand All @@ -40,15 +42,15 @@ impl<O: IsA<Subprocess> + IsA<glib::object::Object> + Clone + 'static> Subproces
let stdin_buf = stdin_buf.to_glib_full();
let cancellable = cancellable.into();
let cancellable = cancellable.to_glib_none();
let user_data: Box<Box<(R, *mut i8)>> = Box::new(Box::new((callback, stdin_buf)));
let user_data: Box<Box<(R, *mut c_char)>> = Box::new(Box::new((callback, stdin_buf)));
unsafe extern "C" fn communicate_utf8_async_trampoline<R: FnOnce(Result<(String, String), Error>) + Send + 'static>(_source_object: *mut gobject_ffi::GObject, res: *mut ffi::GAsyncResult, user_data: glib_ffi::gpointer)
{
let mut error = ptr::null_mut();
let mut stdout_buf = ptr::null_mut();
let mut stderr_buf = ptr::null_mut();
let _ = ffi::g_subprocess_communicate_utf8_finish(_source_object as *mut _, res, &mut stdout_buf, &mut stderr_buf, &mut error);
let result = if error.is_null() { Ok((from_glib_full(stdout_buf), from_glib_full(stderr_buf))) } else { Err(from_glib_full(error)) };
let callback: Box<Box<(R, *mut i8)>> = Box::from_raw(user_data as *mut _);
let callback: Box<Box<(R, *mut c_char)>> = Box::from_raw(user_data as *mut _);
glib_ffi::g_free(callback.1 as *mut _);
callback.0(result);
}
Expand Down