about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDaniel Farina <daniel@fdr.io>2013-05-27 09:52:56 -0700
committerDaniel Farina <daniel@fdr.io>2013-05-27 10:02:48 -0700
commit379460558b2dfd7ddbd0b29abfaa2642d9f0961e (patch)
treec7ee77aced192dff18c0f2676d784f0e5cfe2372 /src
parent3941f78a1bfb3ecf077dd782e5d03ea7fafcad86 (diff)
downloadrust-379460558b2dfd7ddbd0b29abfaa2642d9f0961e.tar.gz
rust-379460558b2dfd7ddbd0b29abfaa2642d9f0961e.zip
Use passing by-value in gmtime, mktime
Per the recommendation of the now-removed FIXME.
Diffstat (limited to 'src')
-rw-r--r--src/libextra/time.rs17
-rw-r--r--src/rt/rust_builtin.cpp12
2 files changed, 14 insertions, 15 deletions
diff --git a/src/libextra/time.rs b/src/libextra/time.rs
index 8a0d50ed52c..2b43291c28a 100644
--- a/src/libextra/time.rs
+++ b/src/libextra/time.rs
@@ -22,11 +22,11 @@ pub mod rustrt {
         pub unsafe fn precise_time_ns(ns: &mut u64);
 
         pub unsafe fn rust_tzset();
-        // FIXME: The i64 values can be passed by-val when #2064 is fixed.
+
         pub unsafe fn rust_gmtime(sec: i64, nsec: i32, result: &mut Tm);
         pub unsafe fn rust_localtime(sec: i64, nsec: i32, result: &mut Tm);
-        pub unsafe fn rust_timegm(tm: &Tm, sec: &mut i64);
-        pub unsafe fn rust_mktime(tm: &Tm, sec: &mut i64);
+        pub unsafe fn rust_timegm(tm: &Tm) -> i64;
+        pub unsafe fn rust_mktime(tm: &Tm) -> i64;
     }
 }
 
@@ -177,12 +177,11 @@ pub impl Tm {
     /// Convert time to the seconds from January 1, 1970
     fn to_timespec(&self) -> Timespec {
         unsafe {
-            let mut sec = 0i64;
-            if self.tm_gmtoff == 0_i32 {
-                rustrt::rust_timegm(self, &mut sec);
-            } else {
-                rustrt::rust_mktime(self, &mut sec);
-            }
+            let sec = match self.tm_gmtoff {
+                0_i32 => rustrt::rust_timegm(self),
+                _     => rustrt::rust_mktime(self)
+            };
+
             Timespec::new(sec, self.tm_nsec)
         }
     }
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index a2f253550af..b0a46d2ac29 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -459,18 +459,18 @@ rust_localtime(int64_t sec, int32_t nsec, rust_tm *timeptr) {
     tm_to_rust_tm(&tm, timeptr, gmtoff, zone, nsec);
 }
 
-extern "C" CDECL void
-rust_timegm(rust_tm* timeptr, int64_t *out) {
+extern "C" CDECL int64_t
+rust_timegm(rust_tm* timeptr) {
     tm t;
     rust_tm_to_tm(timeptr, &t);
-    *out = TIMEGM(&t);
+    return TIMEGM(&t);
 }
 
-extern "C" CDECL void
-rust_mktime(rust_tm* timeptr, int64_t *out) {
+extern "C" CDECL int64_t
+rust_mktime(rust_tm* timeptr) {
     tm t;
     rust_tm_to_tm(timeptr, &t);
-    *out = mktime(&t);
+    return mktime(&t);
 }
 
 extern "C" CDECL rust_sched_id