* fports.c (scm_stdio_to_port, scm_open_file): Set the port's
authorJim Blandy <jimb@red-bean.com>
Sun, 10 Nov 1996 00:15:21 +0000 (00:15 +0000)
committerJim Blandy <jimb@red-bean.com>
Sun, 10 Nov 1996 00:15:21 +0000 (00:15 +0000)
pointer to the stdio stream before calling scm_setbuf0, so the
latter will be able to retrieve it.  I'm surprised this didn't
segfault earlier.  (Thanks to Christopher Lee.)

libguile/fports.c

index b7e31b1..928aeef 100644 (file)
@@ -171,9 +171,9 @@ scm_open_file (filename, modes)
       pt = scm_add_to_port_table (port);
       SCM_SETPTAB_ENTRY (port, pt);
       SCM_SETCAR (port, scm_tc16_fport | scm_mode_bits (mode));
+      SCM_SETSTREAM (port, (SCM) f);
       if (SCM_BUF0 & SCM_CAR (port))
        scm_setbuf0 (port);
-      SCM_SETSTREAM (port, (SCM) f);
       SCM_PTAB_ENTRY (port)->file_name = filename;
     }
   SCM_ALLOW_INTS;
@@ -205,9 +205,9 @@ scm_stdio_to_port (file, mode, name)
     pt = scm_add_to_port_table (port);
     SCM_SETPTAB_ENTRY (port, pt);
     SCM_SETCAR (port, (scm_tc16_fport | mode_bits));
+    SCM_SETSTREAM (port, (SCM) file);
     if (SCM_BUF0 & SCM_CAR (port))
       scm_setbuf0 (port);
-    SCM_SETSTREAM (port, (SCM) file);
     SCM_PTAB_ENTRY (port)->file_name = scm_makfrom0str (name);
   }
   SCM_ALLOW_INTS;