diff --git a/ChangeLog b/ChangeLog
index 200c9239..69e06549 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
+
+	* ser_posix.c (ser_open): Do fill in fdp->ifd before already
+	using it in ser_setspeed().
+
 2006-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
 
 	* jtagmkI.c (jtagmkI_close): revert baud rate to the initial
diff --git a/ser_posix.c b/ser_posix.c
index 2c3671ab..c8ce502e 100644
--- a/ser_posix.c
+++ b/ser_posix.c
@@ -236,6 +236,8 @@ static void ser_open(char * port, long baud, union filedescriptor *fdp)
     exit(1);
   }
 
+  fdp->ifd = fd;
+
   /*
    * set serial line attributes
    */
@@ -246,8 +248,6 @@ static void ser_open(char * port, long baud, union filedescriptor *fdp)
             progname, port, strerror(-rc));
     exit(1);
   }
-
-  fdp->ifd = fd;
 }