From bae79b80e32cc2658dbd7c0f804f5c9ae0f2ec95 Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@factorcode.org>
Date: Sun, 3 Feb 2008 15:14:48 -0600
Subject: [PATCH 1/3] Undo handle duplication

---
 extra/io/windows/launcher/launcher.factor | 14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)

diff --git a/extra/io/windows/launcher/launcher.factor b/extra/io/windows/launcher/launcher.factor
index 3d0c2feac1..f3f78fbb88 100755
--- a/extra/io/windows/launcher/launcher.factor
+++ b/extra/io/windows/launcher/launcher.factor
@@ -118,23 +118,11 @@ TUPLE: CreateProcess-args
 : inherited-stderr ( args -- handle )
     drop STD_ERROR_HANDLE GetStdHandle ;
 
-: duplicate-handle ( handle -- handle )
-    GetCurrentProcess
-    swap
-    GetCurrentProcess
-    f <void*> [
-        0
-        TRUE
-        DUPLICATE_SAME_ACCESS
-        DuplicateHandle win32-error=0/f
-    ] keep *void* ;
-
 : redirect-stderr ( args -- handle )
     +stderr+ get
     dup +stdout+ eq? [
         drop
-        CreateProcess-args-lpStartupInfo duplicate-handle
-        STARTUPINFO-hStdOutput
+        CreateProcess-args-lpStartupInfo STARTUPINFO-hStdOutput
     ] [
         GENERIC_WRITE CREATE_ALWAYS redirect
         swap inherited-stderr ?closed

From e7722c02b75252c9ba8456c1390c0db6b2d98860 Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@factorcode.org>
Date: Sun, 3 Feb 2008 17:28:57 -0600
Subject: [PATCH 2/3] Add unit test for float alignment

---
 core/compiler/test/alien.factor | 10 ++++++++++
 vm/ffi_test.c                   |  5 +++++
 vm/ffi_test.h                   |  4 ++++
 3 files changed, 19 insertions(+)
 mode change 100644 => 100755 vm/ffi_test.c
 mode change 100644 => 100755 vm/ffi_test.h

diff --git a/core/compiler/test/alien.factor b/core/compiler/test/alien.factor
index acb9a4a4fa..9416fd1415 100755
--- a/core/compiler/test/alien.factor
+++ b/core/compiler/test/alien.factor
@@ -270,6 +270,16 @@ FUNCTION: double ffi_test_35 test-struct-11 x int y ;
     3 ffi_test_35
 ] unit-test
 
+C-STRUCT: test-struct-12 { "int" "a" } { "double" "x" } ;
+
+: make-struct-12
+    "test-struct-12" <c-object>
+    [ set-test-struct-12-x ] keep ;
+
+FUNCTION: double ffi_test_36 ( test-struct-12 x ) ;
+
+[ 1.23456 ] [ 1.23456 make-struct-12 ffi_test_36 ] unit-test
+
 ! Test callbacks
 
 : callback-1 "void" { } "cdecl" [ ] alien-callback ;
diff --git a/vm/ffi_test.c b/vm/ffi_test.c
old mode 100644
new mode 100755
index f6e70fd6ac..9cec5ccbad
--- a/vm/ffi_test.c
+++ b/vm/ffi_test.c
@@ -245,3 +245,8 @@ double ffi_test_35(struct test_struct_11 x, int y)
 {
 	return (x.x + x.y) * y;
 }
+
+double ffi_test_36(struct test_struct_12 x)
+{
+	return x.x;
+}
diff --git a/vm/ffi_test.h b/vm/ffi_test.h
old mode 100644
new mode 100755
index 27e402b74f..aac5d32f93
--- a/vm/ffi_test.h
+++ b/vm/ffi_test.h
@@ -57,3 +57,7 @@ struct test_struct_10 { float x; int y; };
 DLLEXPORT double ffi_test_34(struct test_struct_10 x, int y);
 struct test_struct_11 { int x; int y; };
 DLLEXPORT double ffi_test_35(struct test_struct_11 x, int y);
+
+struct test_struct_12 { int a; double x; };
+
+DLLEXPORT double ffi_test_36(struct test_struct_12 x);

From d0e5b238e2c056500e4bab055b404eac04ad7a52 Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@factorcode.org>
Date: Sun, 3 Feb 2008 20:36:04 -0600
Subject: [PATCH 3/3] Use new feature

---
 extra/tools/deploy/backend/backend.factor | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/extra/tools/deploy/backend/backend.factor b/extra/tools/deploy/backend/backend.factor
index f2bd03475f..d768b6a334 100755
--- a/extra/tools/deploy/backend/backend.factor
+++ b/extra/tools/deploy/backend/backend.factor
@@ -16,8 +16,11 @@ IN: tools.deploy.backend
 : copy-lines ( stream -- )
     [ (copy-lines) ] with-disposal ;
 
-: run-with-output ( descriptor -- )
-    <process-stream>
+: run-with-output ( arguments -- )
+    [
+        +arguments+ set
+        +stdout+ +stderr+ set
+    ] H{ } make-assoc <process-stream>
     dup duplex-stream-out dispose
     copy-lines ;