Front page | perl.perl5.porters |
Postings from January 2004
[perl #25251] Encode::decode trashes input parameter since Encode 0.96
Thread Previous
|
Thread Next
From:
Andreas Koenig
Date:
January 24, 2004 19:49
Subject:
[perl #25251] Encode::decode trashes input parameter since Encode 0.96
Message ID:
rt-3.0.8-25251-72106.19.6760534705015@perl.org
# New Ticket Created by Andreas Koenig
# Please include the string: [perl #25251]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=25251 >
This is a bug report for perl from k@k75.linux.bogus,
generated with the help of perlbug 1.34 running under perl v5.9.0.
-----------------------------------------------------------------
[Please enter your report here]
The following program illustrates how Encode::decode can step
on the input parameter quite heavily:
perl -e '
use Encode;
use strict;
my $raw = my $raw2 = "\224\363\214\373\227T\224V";
for my $enc (qw( shift-jis )){
for my $check (0,0,1,0){
my $reco = eval {Encode::decode($enc,$raw,$check);};
print "not " unless $raw eq $raw2;
printf "ok # length raw[%d]length raw2[%d]\n", length($raw), length($raw2);
}
}
'
ok # length raw[8]length raw2[8]
ok # length raw[8]length raw2[8]
not ok # length raw[0]length raw2[8]
not ok # length raw[0]length raw2[8]
I get the same result for latin1. With latin1 I entertained binsearch:
----Program----
use Encode;
use strict;
my $raw = my $raw2 = "\224\363\214\373\227T\224V";
for my $enc (qw( shift-jis )){
for my $check (0,0,1,0){
my $reco = eval {Encode::decode($enc,$raw,$check);};
print "not " unless $raw eq $raw2;
printf "ok # length raw[%d]length raw2[%d]\n", length($raw), length($raw2);
}
}
----Output of .../p4JIpYe/perl-5.7.3@15429/bin/perl----
ok # length raw[8]length raw2[8]
ok # length raw[8]length raw2[8]
ok # length raw[8]length raw2[8]
ok # length raw[8]length raw2[8]
----EOF ($?='0')----
----Output of .../p41ymlh/perl-5.7.3@15430/bin/perl----
ok # length raw[8]length raw2[8]
ok # length raw[8]length raw2[8]
not ok # length raw[0]length raw2[8]
not ok # length raw[0]length raw2[8]
----EOF ($?='0')----
That leads me to
Change 15430 by jhi@alpha on 2002/03/22 21:48:28
Upgrade to Encode 0.96, from Dan Kogai.
[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=library
severity=high
---
Site configuration information for perl v5.9.0:
Configured by k at Sat Jan 24 05:38:55 CET 2004.
Summary of my perl5 (revision 5.0 version 9 subversion 0 patch 21538) configuration:
Platform:
osname=linux, osvers=2.4.22-rc2-ac2, archname=i686-linux-64int
uname='linux k75 2.4.22-rc2-ac2 #1 sat aug 16 12:22:34 cest 2003 i686 gnulinux '
config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203 -Dinstallusrbinperl=n -Uversiononly -Doptimize=-g -des -Duse64bitint -Dusedevel'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef useithreads=undef usemultiplicity=undef
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=define use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-g',
cppflags='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='3.3.2 (Debian)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version='2.3.2'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Locally applied patches:
DEVEL21538
patchaperlup: --upto 22203
---
@INC for perl v5.9.0:
/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203/lib/5.9.0/i686-linux-64int
/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203/lib/5.9.0
/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203/lib/site_perl/5.9.0/i686-linux-64int
/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203/lib/site_perl/5.9.0
/home/src/perl/repoperls/installed-perls/perl/plcRGXC/perl-5.8.0@22203/lib/site_perl
.
---
Environment for perl v5.9.0:
HOME=/home/k
LANG=C
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/k/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/perl/bin:/usr/X11/bin:/sbin:/usr/sbin
PERL_BADLANG (unset)
SHELL=/usr/bin/zsh
Thread Previous
|
Thread Next