Duh. If the input is a stream of UTF-8 bytes, all that's
Jarkko Hietaniemi [Sun, 7 Apr 2002 14:51:04 +0000 (14:51 +0000)]
needed is SvUTF8_on(), sv_utf8_upgrade() is quite bogus.
Now, where was my coffee mug...

p4raw-id: //depot/perl@15779

ext/File/Glob/Glob.pm
ext/File/Glob/Glob.xs
pod/perlfunc.pod
pp_sys.c

index 4c34d38..1ae894f 100644 (file)
@@ -338,7 +338,6 @@ Unicode compatibility:
 The filenames returned will be marked as being in UTF-8 encoding of
 Unicode.  Note that it is your responsibility to ascertain that the
 filesystem you are globbing in returns valid UTF-8 filenames.
-The encoding pragma affects this feature, see L<encoding>.
 
 =head1 DIAGNOSTICS
 
index 5d95666..1bb5fc4 100644 (file)
@@ -63,8 +63,8 @@ PPCODE:
                                      strlen(pglob.gl_pathv[i])));
            TAINT;
            SvTAINT(tmp);
-           if (pglob.gl_flags & GLOB_UTF8)
-               sv_utf8_upgrade(tmp);
+           if (pglob.gl_flags & GLOB_UTF8 && !IN_BYTES)
+               SvUTF8_on(tmp);
            PUSHs(tmp);
        }
 
index c04cc48..048ecfb 100644 (file)
@@ -3035,7 +3035,6 @@ DIRHANDLEs have their own namespace separate from FILEHANDLEs.
 In three-argument form the middle argument may be C<:utf8> to force
 the filenames returned by readdir() to be in UTF-8 encoding of Unicode.
 This naturally works only if your filesystem returns UTF-8 filenames.
-The encoding pragma affects this feature, see L<encoding>.
 
 =item ord EXPR
 
index ea9a6a5..aa8fb77 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3817,8 +3817,8 @@ PP(pp_readdir)
            if (!(IoFLAGS(io) & IOf_UNTAINT))
                SvTAINTED_on(sv);
 #endif
-           if (IoFLAGS(io) & IOf_DIR_UTF8)
-               sv_utf8_upgrade(sv);
+           if (IoFLAGS(io) & IOf_DIR_UTF8 && !IN_BYTES)
+               SvUTF8_on(sv);
            XPUSHs(sv_2mortal(sv));
        }
     }