Encode/IO doc tweaks.
[p5sagit/p5-mst-13.2.git] / ext / Encode / Encode.xs
index fea83ae..6e3684e 100644 (file)
@@ -97,7 +97,7 @@ PerlIOEncode_pushed(PerlIO *f, const char *mode, SV *arg)
   {
    e->enc = Nullsv;
    errno  = EINVAL;
-   Perl_warner(aTHX_ WARN_IO, "Cannot find encoding \"%_\"", arg);
+   Perl_warner(aTHX_ WARN_IO, "Cannot find encoding \"%"SVf"\"", arg);
    return -1;
   }
  SvREFCNT_inc(e->enc);
@@ -219,9 +219,11 @@ PerlIOEncode_flush(PerlIO *f)
 {
  PerlIOEncode *e = PerlIOSelf(f,PerlIOEncode);
  IV code = 0;
- dTHX;
- if (e->bufsv && (PerlIOBase(f)->flags & (PERLIO_F_RDBUF|PERLIO_F_WRBUF)))
+ if (e->bufsv && (PerlIOBase(f)->flags & (PERLIO_F_RDBUF|PERLIO_F_WRBUF))
+     &&(e->base.ptr > e->base.buf)
+    )
   {
+   dTHX;
    dSP;
    SV *str;
    char *s;
@@ -339,7 +341,7 @@ PerlIO_funcs PerlIO_encode = {
  PerlIOBase_eof,
  PerlIOBase_error,
  PerlIOBase_clearerr,
- PerlIOBuf_setlinebuf,
+ PerlIOBase_setlinebuf,
  PerlIOEncode_get_base,
  PerlIOBuf_bufsiz,
  PerlIOBuf_get_ptr,
@@ -452,6 +454,11 @@ encode_method(pTHX_ encode_t *enc, encpage_t *dir, SV *src, int check)
      SvCUR_set(src,SvCUR(src)-slen);
     }
   }
+ else
+  {
+   SvCUR_set(dst,slen);
+   SvPOK_on(dst);
+  }
  return dst;
 }
 
@@ -460,10 +467,10 @@ MODULE = Encode           PACKAGE = Encode::XS    PREFIX = Method_
 PROTOTYPES: ENABLE
 
 void
-Method_decode(obj,src,check = 0)
+Method_decode(obj,src,check = FALSE)
 SV *   obj
 SV *   src
-int    check
+bool   check
 CODE:
  {
   encode_t *enc = INT2PTR(encode_t *, SvIV(SvRV(obj)));
@@ -473,10 +480,10 @@ CODE:
  }
 
 void
-Method_encode(obj,src,check = 0)
+Method_encode(obj,src,check = FALSE)
 SV *   obj
 SV *   src
-int    check
+bool   check
 CODE:
  {
   encode_t *enc = INT2PTR(encode_t *, SvIV(SvRV(obj)));