Patch from Marius Vollmer <marius.vollmer@nokia.com> to fix
assumption that some file descriptors are unused. (Closes: #593358)

Index: eperl/eperl_sys.c
===================================================================
--- eperl.orig/eperl_sys.c	2011-12-08 09:56:37.000000000 +0100
+++ eperl/eperl_sys.c	2011-12-08 09:57:14.000000000 +0100
@@ -105,21 +105,22 @@
 #define HANDLE_STDIN  0
 #define HANDLE_STDOUT 1
 #define HANDLE_STDERR 2
-#define HANDLE_STORE_STDIN  10
-#define HANDLE_STORE_STDOUT 11
-#define HANDLE_STORE_STDERR 12
 
 static int IO_redirected_stdin  = FALSE;
 static int IO_redirected_stdout = FALSE;
 static int IO_redirected_stderr = FALSE;
 
+static int IO_handle_store_stdin;
+static int IO_handle_store_stdout;
+static int IO_handle_store_stderr;
+
 void IO_redirect_stdin(FILE *fp)
 {
     if (IO_redirected_stdin)
         IO_restore_stdin();
 
     /* first copy the current stdin to the store handle */
-    (void)dup2(HANDLE_STDIN, HANDLE_STORE_STDIN);
+    IO_handle_store_stdin = dup(HANDLE_STDIN);
 
     /* then copy the new handle to stdin */
     (void)dup2(fileno(fp), HANDLE_STDIN);
@@ -134,7 +135,7 @@
         IO_restore_stdout();
 
     /* first copy the current stdout to the store handle */
-    (void)dup2(HANDLE_STDOUT, HANDLE_STORE_STDOUT);
+    IO_handle_store_stdout = dup(HANDLE_STDOUT);
 
     /* then copy the new handle to stdout */
     (void)dup2(fileno(fp), HANDLE_STDOUT);
@@ -149,7 +150,7 @@
         IO_restore_stderr();
 
     /* first copy the current stderr to the store handle */
-    (void)dup2(HANDLE_STDERR, HANDLE_STORE_STDERR);
+    IO_handle_store_stderr = dup(HANDLE_STDERR);
 
     /* then copy the new handle to stderr */
     (void)dup2(fileno(fp), HANDLE_STDERR);
@@ -176,7 +177,7 @@
 void IO_restore_stdin(void)
 {
     if (IO_redirected_stdin) {
-        dup2(HANDLE_STORE_STDIN, HANDLE_STDIN); 
+        dup2(IO_handle_store_stdin, HANDLE_STDIN); 
         IO_redirected_stdin = FALSE;
     }
 }
@@ -184,7 +185,7 @@
 void IO_restore_stdout(void)
 {
     if (IO_redirected_stdout) {
-        dup2(HANDLE_STORE_STDOUT, HANDLE_STDOUT); 
+        dup2(IO_handle_store_stdout, HANDLE_STDOUT); 
         IO_redirected_stdout = FALSE;
     }
 }
@@ -192,7 +193,7 @@
 void IO_restore_stderr(void)
 {
     if (IO_redirected_stderr) {
-        dup2(HANDLE_STORE_STDERR, HANDLE_STDERR); 
+      dup2(IO_handle_store_stderr, HANDLE_STDERR); 
         IO_redirected_stderr = FALSE;
     }
 }
