[Gambas-user] Issue 83 in gambas: DirView expand fails when bad symlinks encountered
gambas at ...2524...
gambas at ...2524...
Tue Aug 23 05:42:17 CEST 2011
Status: New
Owner: ----
Labels: Version Type-Bug Priority-Medium OpSys-Any Dist-Any Arch-Any
Desktop-Any GUI-Any
New issue 83 by adamn... at ...626...: DirView expand fails when bad symlinks
encountered
http://code.google.com/p/gambas/issues/detail?id=83
1) This problem regards the DirView control in both GB2 and GB3 (and the
DirChooser control as well)
The issue is a little obscure and it is important to see the bug and not
the symptom, so please bear with me.
The issue arises if there is a broken symbolic link in a subdirectory below
the root directory shown by the DirView. The bug occurs if some action is
taken on the directory while the DirView is expanding (via one of the
events). When the broken link is encountered, gambas correctly raises an
error and thus control is returned to the application. However, if the
application does not handle the error execution continues but the bug is
apparent.
The bug is that the remainder of the subdirectory with the broken link AND
ALL OTHER DIRECTORIES AT THE SAME LEVEL ARE IGNORED BY THE DIRVIEW.
I have attached a demonstration project (GB3) that shows one way to expose
the bug. Note the stress is on "one way", there are others but the demo
project shows it as simply as I can.
2) GIVE THE FOLLOWING INFORMATIONS (if they are appropriate):
Version: TRUNK and 2.23.?
Revision: r4032
Operating system: Linux
Distribution: Gentoo based
Architecture: x86
GUI component: GTK+
Desktop used: LXDE
3) Provide a little project that reproduces the bug or the crash.
Attached.
4) If your project needs a database, try to provide it, or part of it.
N/A
5) Explain clearly how to reproduce the bug or the crash.
This project creates a set of subdirectories under itself to demonstrate
the problem. The instructions are:
a) When the program starts, the dirview shows its own directory, ignore this
b) Click on "1. Set up demo". This creates a heirarchy of directories
beneath the project directory in a directory called "testbed", each of the
5 directories contains 5 subdirectories. Except Dir3, which contains an
extra directory (Subdir2a) that will be used for the demonstration.
c) Expand the directories in the dirview so you can understand the
structure. Each directory contains a symlink to a picture in the project
directory, which
d) Make sure that "Dir3" is expanded and selected.
e) Click on "2. Make bad symlink". This sets up the problem so it can be
seen. (It changes the icon link for SubDir2a to a new picture and then
deletes that picture. Thus creating a broken symbolic link)
f) Click on "3. Show Bug". This refreshes the DirView. Which now only
shows two directories in Dir3. The other 4 are ignored.
The sequence of buttons can be repeated.
6) By doing that carefully, you have done 50% of the bug fix job!
Finally, I repeat. This is one way of making the bug occur. Obviously
there is a workaround for the demo in that the DirView1_Icon handler should
do a
Try DirView1.Icon = Picture.Load(Path &/ "icon.png"
If Error ...
However, in my situation the bug is occurring in a DirView1_Change handler
that does not involve setting the icon. It is occurring in a
non-interactive piece of code far removed from the form code and where the
error has been consumed silently because other (expected) run time errors
are handled.
Oh, I almost forgot. This demo also somehow results in circular
references. I am not sure if that is related or not.
Attachments:
badsymlinks-0.0.1.tar.gz 742 KB
More information about the User
mailing list