localize $@ during binmode (RT#78844)
authorDavid Golden <dagolden@cpan.org>
Sat, 6 Nov 2010 20:00:18 +0000 (16:00 -0400)
committerDavid Golden <dagolden@cpan.org>
Sat, 6 Nov 2010 20:17:54 +0000 (16:17 -0400)
perlio.c
t/io/layers.t

index 1440048..4073c97 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -1340,6 +1340,8 @@ int
 PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
 {
     int code = 0;
+    ENTER;
+    save_scalar(PL_errgv);
     if (f && names) {
        PerlIO_list_t * const layers = PerlIO_list_alloc(aTHX);
        code = PerlIO_parse_layers(aTHX_ layers, names);
@@ -1348,6 +1350,7 @@ PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
        }
        PerlIO_list_free(aTHX_ layers);
     }
+    LEAVE;
     return code;
 }
 
index a743c8a..dea3d09 100644 (file)
@@ -197,7 +197,6 @@ SKIP: {
 
     # RT78844
     {
-        local $TODO = "RT#78844";
         local $@ = "foo";
         binmode(F, ":encoding(utf8)");
         is( $@, "foo", '$@ not clobbered by binmode and :encoding');