Make PerlIO_getpos() to behave like fgetpos() on return.
[p5sagit/p5-mst-13.2.git] / perlio.c
index e350fef..8d54f77 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -1850,7 +1850,7 @@ PerlIOMmap_map(PerlIO *f)
               page_size = sysconf(_SC_PAGESIZE);
 #   else
               page_size = sysconf(_SC_PAGE_SIZE);
-#   endif 
+#   endif
               if ((long)page_size < 0) {
                   if (errno) {
                       SV *error = ERRSV;
@@ -1858,10 +1858,10 @@ PerlIOMmap_map(PerlIO *f)
                       STRLEN n_a;
                       (void)SvUPGRADE(error, SVt_PV);
                       msg = SvPVx(error, n_a);
-                      Perl_croak("panic: sysconf: %s", msg);
+                      Perl_croak(aTHX_ "panic: sysconf: %s", msg);
                   }
                   else
-                      Perl_croak("panic: sysconf: pagesize unknown");
+                      Perl_croak(aTHX_ "panic: sysconf: pagesize unknown");
               }
           }
 #else
@@ -1874,7 +1874,7 @@ PerlIOMmap_map(PerlIO *f)
 #   endif
 #endif
        if ((IV)page_size <= 0)
-           Perl_croak("panic: bad pagesize %"IVdf, (IV)page_size);
+           Perl_croak(aTHX_ "panic: bad pagesize %"IVdf, (IV)page_size);
        }
        if (b->posn < 0)
         {
@@ -2314,7 +2314,7 @@ int
 PerlIO_getpos(PerlIO *f, Fpos_t *pos)
 {
  *pos = PerlIO_tell(f);
- return 0;
+ return *pos == -1 ? -1 : 0;
 }
 #else
 #ifndef PERLIO_IS_STDIO
@@ -2359,7 +2359,8 @@ PerlIO_vsprintf(char *s, int n, const char *fmt, va_list ap)
    if (strlen(s) >= (STRLEN)n)
     {
      dTHX;
-     PerlIO_puts(Perl_error_log,"panic: sprintf overflow - memory corrupted!\n");
+     (void)PerlIO_puts(Perl_error_log,
+                      "panic: sprintf overflow - memory corrupted!\n");
      my_exit(1);
     }
   }