develooper Front page | perl.perl5.porters | Postings from May 2002

[ID 20020531.006] vec assignments generate 2 warnings, I'd prefernone

Thread Next
From:
David Dyck
Date:
May 31, 2002 09:26
Subject:
[ID 20020531.006] vec assignments generate 2 warnings, I'd prefernone
Message ID:
200205311626.JAA32700@dd.tc.fluke.com

This is a bug report for perl from dcd@tc.fluke.com,
generated with the help of perlbug 1.33 running under perl v5.7.3.


-----------------------------------------------------------------
[Please enter your report here]

The following script issues warnings (2 of them) for
vec assignments, while normal assignments to scalars
don't generate any warnings.  Since perl guarantees that
the extra bits are filled with zeros, I believe it
should not issue these warnings.

While the script demonstrates simple cases, the
testing if the hash element exists and pre-initializing
it before the vec assignment complicates production 
scripts, and I'd strongly prefer to avoid "no warnings".

Use of uninitialized value in vec at vec_warn.pl line 16.
Use of uninitialized value in scalar assignment at vec_warn.pl line 16.
Use of uninitialized value in vec at vec_warn.pl line 17.
Use of uninitialized value in scalar assignment at vec_warn.pl line 17.

$ cat vec_warn.pl

use warnings;
use strict;

my ($s, %sh);
$s = 1;
$sh{foo} = 1;

#If an element off the end of
#the string is written to, Perl will first extend
#the string with sufficiently many zero bytes.
# yet perl generates 2 warnings each for the following 2 vec assignments.
#   Use of uninitialized value in vec
#   Use of uninitialized value in scalar assignment 
my ($v, %vh);
vec($v,0,1) = 1;
vec($vh{foo},0,1) = 1;

# to avoid warnings must pre-init vectors

my ($wv, %wvh);
$wv = $wvh{foo} = '';
vec($wv,0,1) = 1;
vec($wvh{foo},0,1) = 1;



[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=core
    severity=medium
---
Site configuration information for perl v5.7.3:

Configured by dcd at Tue May 28 12:01:59 PDT 2002.

Summary of my perl5 (revision 5.0 version 7 subversion 3 patch 16840) configuration:
  Platform:
    osname=linux, osvers=2.4.19-pre8-ac4, archname=i686-linux
    uname='linux dd 2.4.19-pre8-ac4 #1 thu may 16 10:27:27 pdt 2002 i686 '
    config_args='-Dmksymlinks -Dinstallusrbinperl -Uversiononly -Dusedevel -Doptimize=-O3 -g -de -Dcf_email=dcd@tc.fluke.com'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef 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='-O3 -g',
    cppflags='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include'
    ccversion='', gccversion='egcs-2.91.66.1 19990314/Linux (egcs-1.1.2 release)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -ldbm -ldb -ldl -lm -lc
    perllibs=-ldl -lm -lc
    libc=/lib/libc.so.5.4.44, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:
    DEVEL16824

---
@INC for perl v5.7.3:
    /usr/local/lib/perl5/5.7.3/i686-linux
    /usr/local/lib/perl5/5.7.3
    /usr/local/lib/perl5/site_perl/5.7.3/i686-linux
    /usr/local/lib/perl5/site_perl/5.7.3
    /usr/local/lib/perl5/site_perl
    .

---
Environment for perl v5.7.3:
    HOME=/home/dcd
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/home/dcd/bin:/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/games:/usr/local/samba:/home/hobbes/tools/scripts:/home/hobbes/tools/linux:/usr0/hobbes/tools/scripts:/usr0/dcd/bin:/apps/general/bin:/usr/public
    PERL_BADLANG (unset)
    SHELL=/bin/bash


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About