From 919ae09d2f6a0a65a1c225f9217dcc8e3ef8faa8 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jackpot51@gmail.com>
Date: Wed, 4 Jul 2018 10:16:34 -0600
Subject: [PATCH] Fix compilation on Redox

---
 src/platform/src/{alloc => allocator}/dlmalloc.rs |  0
 src/platform/src/{alloc => allocator}/ralloc.rs   |  0
 src/platform/src/lib.rs                           | 13 ++++++++-----
 src/platform/src/redox/mod.rs                     |  2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)
 rename src/platform/src/{alloc => allocator}/dlmalloc.rs (100%)
 rename src/platform/src/{alloc => allocator}/ralloc.rs (100%)

diff --git a/src/platform/src/alloc/dlmalloc.rs b/src/platform/src/allocator/dlmalloc.rs
similarity index 100%
rename from src/platform/src/alloc/dlmalloc.rs
rename to src/platform/src/allocator/dlmalloc.rs
diff --git a/src/platform/src/alloc/ralloc.rs b/src/platform/src/allocator/ralloc.rs
similarity index 100%
rename from src/platform/src/alloc/ralloc.rs
rename to src/platform/src/allocator/ralloc.rs
diff --git a/src/platform/src/lib.rs b/src/platform/src/lib.rs
index ebc77989..5d95b235 100644
--- a/src/platform/src/lib.rs
+++ b/src/platform/src/lib.rs
@@ -1,8 +1,11 @@
 #![no_std]
 #![allow(non_camel_case_types)]
+#![feature(alloc)]
 #![feature(allocator_api)]
 //TODO #![feature(thread_local)]
 
+extern crate alloc;
+
 #[cfg(all(not(feature = "no_std"), target_os = "linux"))]
 #[macro_use]
 extern crate sc;
@@ -11,15 +14,15 @@ extern crate sc;
 #[macro_use]
 pub extern crate syscall;
 
-pub use alloc::*;
+pub use allocator::*;
 
 #[cfg(not(feature = "ralloc"))]
-#[path = "alloc/dlmalloc.rs"]
-mod alloc;
+#[path = "allocator/dlmalloc.rs"]
+mod allocator;
 
 #[cfg(feature = "ralloc")]
-#[path = "alloc/ralloc.rs"]
-mod alloc;
+#[path = "allocator/ralloc.rs"]
+mod allocator;
 
 pub use sys::*;
 
diff --git a/src/platform/src/redox/mod.rs b/src/platform/src/redox/mod.rs
index 841fd172..a6db080e 100644
--- a/src/platform/src/redox/mod.rs
+++ b/src/platform/src/redox/mod.rs
@@ -23,7 +23,7 @@ pub fn e(sys: Result<usize, syscall::Error>) -> usize {
 }
 
 pub fn brk(addr: *mut c_void) -> *mut c_void {
-    unsafe { syscall::brk(addr as usize) } as *mut c_void
+    unsafe { syscall::brk(addr as usize).unwrap_or(0) as *mut c_void }
 }
 
 pub fn chdir(path: *const c_char) -> c_int {
-- 
GitLab