Ticket #9509 (closed Patch - Bug Fix: fixed)
Opened 2 years ago
Last modified 22 months ago
MythGallery completely exits when pressing Escape inside a symlinked subdirectory
|Reported by:||mythtv@…||Owned by:||beirdo|
|Component:||Plugin - MythGallery||Version:||0.24-fixes|
I had some trouble with MythGallery not being able to move up one directory level when I press Escape. Instead it would exit MythGallery completely. I did some testing and figured out its due to a problem with the is_subdir() function in iconview.cpp
The function calls QDir::canonicalPath() on the parent and current directories, but this makes a directory with a symlink resolve to its actual patch. This is turn makes the indexOf() check fail.
Here's my setup.
/var/share/images is the base directory. /var/share/images/taz is a symlink to /mnt/taz/e/pictures. When you go into a subdirectory, such as /var/share/images/taz/2010/December and press Escape, it will exit completely because the is_subdir() commands converts /var/share/images/taz/2010/December to /mnt/taz/e/pictures/2010/December, which is no longer a subdirectory of /var/share/images.
The enclosed patch fixed this by using cleanPath() instead. It looks like the primary difference between cleanPath() and canonicalPath() is the resolving of symlinks (which doesn't seem necessary to me). I'm by no means a Qt expert, so I'm not sure if this is the best way to accomplish this.