Unitialized errors in FileSelect.pm
<[email protected]> Fri, 20 Jul 2007 16:51:13 +0800
| Newsgroups | gmane.comp.lang.perl.tk |
|---|---|
| Message-ID | <CA51DF75AEDD5F439DC58E2383F6CE8C01DA1FAE@sinse303.ap.infineon.com> |
This is a multi-part message in MIME format.
------_=_NextPart_001_01C7CAAB.2326E066
Content-Type: text/plain;
charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable
Hello All,
TK Version : 804.027=20
Platform : 5.8 Generic_117350-46 sun4u sparc SUNW,Sun-Fire-V440
Perl Version : 5.8.7
I get a unitialized error in FileSelect.pm in Accept_dir method. It
happens if you use this package to open a File browser, and randomly
click in the dir select widget. Reason is a double click without any
selection cause the $new argument to be uninitalized in Accept_dir
method as given below. I did a slight modification, which work for me.
Does any body else knows ay other solution for this issue?
########################################################################
########
####################### ACCEPT_DIR
# =20
sub Accept_dir
{
my ($cw,$new) =3D @_;
my $dir =3D $cw->cget('-directory');
if(defined $new) {
$cw->configure(-directory =3D> "$dir/$new");
} else {
$cw->configure(-directory =3D> "$dir");
}
} # end sub ACCEPT_DIR
Similary for File selection. Glob_to_re method should be modified as
follows
sub glob_to_re
{
my $regex =3D shift;
$regex =3D~ s/(\\?)(.)/&translate($1,$2)/ge;
#Old code doesn't check if $_ is defined.=20
#return sub { shift =3D~ /^${regex}$/ };=20
return sub {=20
my $str =3D shift;
if(!defined($str)) {
return 0;
}=20
if($str =3D~ /^$regex$/) {
return 1;
} else {
return 0;
}
}
}
Sample test code to reproduce the problem, is attached.
Thanks and Regards
Amit
------_=_NextPart_001_01C7CAAB.2326E066
Content-Type: application/octet-stream;
name="test.pl"
Content-Transfer-Encoding: base64
Content-Description: test.pl
Content-Disposition: attachment;
filename="test.pl"
CnVzZSBUazsKdXNlIFRrOjpGaWxlU2VsZWN0OwpteSAkbWFpbnc7Cm15ICRjb2RlX3JlZiA9IHN1
YiB7CglteSgkZmlsZXNlbGVjdGVkLCRkaXIpID0gZGVmZmlsZSgiLi8iLCIqLnR4dCIsJG1haW53
KTsKCXJldHVybiAwOwp9OwoKKG15ICRib2R5RnJtLCRtYWludykgPSBjcmVhdGVfZGVmYXVsdF93
aW5kb3coIkRFTU8gV0lER0VUIiwgNTAwLCA0MDAsICRjb2RlX3JlZik7Ck1haW5Mb29wOwpzdWIg
ZGVmZmlsZSB7CgoJbXkgJGluaXQJPSBzaGlmdDsKCW15ICRmaWx0ZXIJPSBzaGlmdDsKCW15ICRt
YWludyA9IHNoaWZ0OwoJbXkgKCAkZmlsZXNlbGVjdGVkLCAkZGlyICk7CgkkOjpmaWxlc2VsZWN0
b3IgPSAkbWFpbnctPkZpbGVTZWxlY3QoCgkJCQkJCQkgIC13aWR0aCAgICAgPT4gNDAsCgkJCQkJ
CQkgIC1kaXJlY3RvcnkgPT4gJGluaXQsCgkJCQkJCQkgIC1maWx0ZXIgICAgPT4gJGZpbHRlcgoJ
CQkJCQkJKTsKCSQ6OmZpbGVzZWxlY3Rvci0+Y29uZmlndXJlKCAtYmFja2dyb3VuZCA9PiAnZ3Jh
eScgKTsKCSggJGZpbGVzZWxlY3RlZCwgJGRpciApID0gJDo6ZmlsZXNlbGVjdG9yLT5TaG93KCk7
CgkkZmlsZXNlbGVjdGVkID1+IHMvW1wvXSsvXC8vZyBpZiAoJGZpbGVzZWxlY3RlZCk7CgkkOjpm
aWxlc2VsZWN0b3ItPmRlc3Ryb3kgaWYoVGs6OkV4aXN0cygkOjpmaWxlc2VsZWN0b3IpKTsKCXJl
dHVybiAoICRmaWxlc2VsZWN0ZWQsICRkaXIgKTsKCn0jIGVuZCBzdWIgREVGRklMRQoKIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICBDUkVBVEVfREVGQVVM
VF9XSU5ET1cKc3ViIGNyZWF0ZV9kZWZhdWx0X3dpbmRvdyB7CgoKCW15ICgkdGl0bGUsJHNpemV4
LCRzaXpleSwkYXBwbHlfY29kZSkgPSBAXzsKICAgIG15ICRtYWludyA9IE1haW5XaW5kb3ctPm5l
dzsJCglteSAkYmdfY29sb3IgPSAnZ3JheSc7CgkkbWFpbnctPmNvbmZpZ3VyZSggLWJhY2tncm91
bmQgPT4gJGJnX2NvbG9yICk7CgkkbWFpbnctPm1pbnNpemUoJHNpemV4LCRzaXpleSk7CgoKICAg
ICMgRGl2aWRlIHdpbmRvdywgdXNpbmcgRnJhbWUKICAgICR0aXRsZUZybSA9ICRtYWludy0+RnJh
bWUtPnBhY2soIC1wYWR5ID0+IDIwLCAtcGFkeCA9PiAyMCwgLWZpbGwgPT4gJ3gnICk7CiAgICAk
dGl0bGVGcm0tPmNvbmZpZ3VyZSggLWJhY2tncm91bmQgPT4gJGJnX2NvbG9yICk7CgkKICAgICRi
b2R5RnJtID0gJG1haW53LT5GcmFtZSggLWJvcmRlcndpZHRoID0+IDEsIC1yZWxpZWYgPT4gImdy
b292ZSIgKS0+IHBhY2soIC1leHBhbmQgPT4gJ3llcycsIC1maWxsID0+ICdib3RoJywgLXBhZHkg
PT4gMjAsIC1wYWR4ID0+IDIwICk7CiAgICAkYm9keUZybS0+Y29uZmlndXJlKCAtYmFja2dyb3Vu
ZCA9PiAkYmdfY29sb3IgKTsKCQogICAgJGJ1dHRvbnNGcm0gPSAkbWFpbnctPkZyYW1lLT5wYWNr
KCAtc2lkZSA9PiAnYm90dG9tJywgLWZpbGwgPT4gJ3gnICk7CiAgICAkYnV0dG9uc0ZybS0+Y29u
ZmlndXJlKCAtYmFja2dyb3VuZCA9PiAkYmdfY29sb3IgKTsKICAgIAogICAgIyBDcmVhdGUgdGl0
bGUKICAgICR0aXRsZUZybS0+TGFiZWwoCiAgICAJICAgIC10ZXh0ID0+ICR0aXRsZSwKCQkJLXJl
bGllZiA9PiAnZ3Jvb3ZlJwogICAgKS0+cGFjayggLWZpbGwgPT4gJ3gnICktPmNvbmZpZ3VyZSgg
LWJhY2tncm91bmQgPT4gJ2dyYXknICk7CgoKICAgICRidXR0b25zRnJtLT5CdXR0b24oCiAgICAg
ICAgICAgIC10ZXh0ICAgID0+ICcgICBPSyAgICcsCgkJCS1zdGF0ZSA9PiAnbm9ybWFsJywKICAg
ICAgICAgICAgLWNvbW1hbmQgPT4gc3ViIHsKCQkJCSRtYWludyA9ICRtYWludzsKICAgICAgICAg
ICAgICAgIG15ICRlcnJvcjsKCQkJCSRlcnJvciA9ICYkYXBwbHlfY29kZSA7CiAgICAgICAgICAg
ICAgICBpZiAoICEkZXJyb3IgKSB7CgkJCQkJJG1haW53LT5kZXN0cm95KCkgaWYoIFRrOjpFeGlz
dHMoJG1haW53KSk7CgkJCQl9IAogICAgICAgICAgICB9CiAgICAgICAgKS0+cGFjayggLXNpZGUg
PT4gJ3RvcCcsIC1hbmNob3IgPT4gJ3NlJyApOwoKICAgICAgcmV0dXJuICRib2R5RnJtLCAkbWFp
bnc7Cgp9ICAgICMgZW5kIHN1YiBDUkVBVEVfREVGQVVMVF9XSU5ET1cK
------_=_NextPart_001_01C7CAAB.2326E066
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--++**==--++**==--++**==--++**==--++**==--++**==--++**==
ptk mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/ptk
------_=_NextPart_001_01C7CAAB.2326E066--