summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2007-04-12 19:11:39 +0000
committerMagnus Holmgren <magnushol@gmail.com>2007-04-12 19:11:39 +0000
commitec88dffb6cde1b0e88c813e1676c8e989668fd9b (patch)
tree4d48a05061f5b4a07ee02d4ea5f14ec4e719d17f /apps
parente6de6e5f8ae96649d0bdf1a26fc135e755c6f183 (diff)
downloadrockbox-ec88dffb6cde1b0e88c813e1676c8e989668fd9b.tar.gz
rockbox-ec88dffb6cde1b0e88c813e1676c8e989668fd9b.zip
Make resuming a directory bookmark more robust (e.g., when the directory no longer exists).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13131 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/tree.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/apps/tree.c b/apps/tree.c
index 723c003ca9..4e4d4c7a9a 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -1191,19 +1191,28 @@ void bookmark_play(char *resume_file, int index, int offset, int seed,
lastdir[0]='\0';
if (playlist_create(resume_file, NULL) != -1)
{
+ char* peek_filename;
resume_directory(resume_file);
if (global_settings.playlist_shuffle)
playlist_shuffle(seed, -1);
/* Check if the file is at the same spot in the directory,
else search for it */
- if ((strcmp(strrchr(playlist_peek(index),'/') + 1,
- filename)))
+ peek_filename = playlist_peek(index);
+
+ if (peek_filename == NULL)
+ return;
+
+ if (strcmp(strrchr(peek_filename, '/') + 1, filename))
{
for ( i=0; i < playlist_amount(); i++ )
{
- if ((strcmp(strrchr(playlist_peek(i),'/') + 1,
- filename)) == 0)
+ peek_filename = playlist_peek(i);
+
+ if (peek_filename == NULL)
+ return;
+
+ if (!strcmp(strrchr(peek_filename, '/') + 1, filename))
break;
}
if (i < playlist_amount())