Re: [ID 20010831.001] SEGV from ($a, b) = (1, 2)
[p5sagit/p5-mst-13.2.git] / perlio.c
index 093cc8a..549a187 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -426,7 +426,7 @@ PerlIO_list_push(PerlIO_list_t *list,PerlIO_funcs *funcs,SV *arg)
 
 
 void
-PerlIO_cleanup_layers(pTHXo_ void *data)
+PerlIO_cleanup_layers(pTHX_ void *data)
 {
 #if 0
  PerlIO_known_layers = Nullhv;
@@ -771,7 +771,7 @@ PerlIO_default_layers(pTHX)
    PerlIO_funcs *osLayer = &PerlIO_unix;
    PerlIO_def_layerlist  = PerlIO_list_alloc();
    PerlIO_define_layer(aTHX_ &PerlIO_unix);
-#ifdef WIN32
+#if defined(WIN32) && !defined(UNDER_CE)
    PerlIO_define_layer(aTHX_ &PerlIO_win32);
 #if 0
    osLayer = &PerlIO_win32;
@@ -1968,7 +1968,10 @@ PerlIOUnix_pushed(PerlIO *f, const char *mode, SV *arg)
   {
    PerlIOUnix *s = PerlIOSelf(f,PerlIOUnix);
    s->fd     = PerlIO_fileno(PerlIONext(f));
-   s->oflags = PerlIOUnix_oflags(mode);
+   /* XXX could (or should) we retrieve the oflags from the open file handle
+      rather than believing the "mode" we are passed in?
+      XXX Should the value on NULL mode be 0 or -1?  */
+   s->oflags = mode ? PerlIOUnix_oflags(mode) : -1;
   }
  PerlIOBase(f)->flags |= PERLIO_F_OPEN;
  return code;