diff options
author | Michael Hohmuth <sideral@rockbox.org> | 2011-08-04 12:13:12 +0000 |
---|---|---|
committer | Michael Hohmuth <sideral@rockbox.org> | 2011-08-04 12:13:12 +0000 |
commit | 6196925915f28d3a5fac2f00c2e83d4fb8714ab5 (patch) | |
tree | 3aad9918308739a88757ad790ac5bf27a487f052 /apps/tagtree.c | |
parent | 92a578c6a758e8619b2056da93c79e3455c6a77a (diff) | |
download | rockbox-6196925915f28d3a5fac2f00c2e83d4fb8714ab5.tar.gz rockbox-6196925915f28d3a5fac2f00c2e83d4fb8714ab5.zip |
Database: Fix array-bounds calculation when applying a format using
%strip to partially loaded (chunked) database results.
git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_9@30251 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/tagtree.c')
-rw-r--r-- | apps/tagtree.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/apps/tagtree.c b/apps/tagtree.c index 1fb05b494c..4003087133 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c | |||
@@ -1244,6 +1244,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) | |||
1244 | dptr->name = str(LANG_TAGNAVI_ALL_TRACKS); | 1244 | dptr->name = str(LANG_TAGNAVI_ALL_TRACKS); |
1245 | dptr++; | 1245 | dptr++; |
1246 | current_entry_count++; | 1246 | current_entry_count++; |
1247 | special_entry_count++; | ||
1247 | } | 1248 | } |
1248 | if (offset <= 1) | 1249 | if (offset <= 1) |
1249 | { | 1250 | { |
@@ -1252,12 +1253,12 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) | |||
1252 | dptr->extraseek = -1; | 1253 | dptr->extraseek = -1; |
1253 | dptr++; | 1254 | dptr++; |
1254 | current_entry_count++; | 1255 | current_entry_count++; |
1256 | special_entry_count++; | ||
1255 | } | 1257 | } |
1256 | special_entry_count+=2; | 1258 | |
1259 | total_count += 2; | ||
1257 | } | 1260 | } |
1258 | 1261 | ||
1259 | total_count += special_entry_count; | ||
1260 | |||
1261 | while (tagcache_get_next(&tcs)) | 1262 | while (tagcache_get_next(&tcs)) |
1262 | { | 1263 | { |
1263 | if (total_count++ < offset) | 1264 | if (total_count++ < offset) |
@@ -1386,7 +1387,7 @@ static int retrieve_entries(struct tree_context *c, int offset, bool init) | |||
1386 | if (strip) | 1387 | if (strip) |
1387 | { | 1388 | { |
1388 | dptr = c->dircache; | 1389 | dptr = c->dircache; |
1389 | for (i = 0; i < total_count; i++, dptr++) | 1390 | for (i = special_entry_count; i < current_entry_count; i++, dptr++) |
1390 | { | 1391 | { |
1391 | int len = strlen(dptr->name); | 1392 | int len = strlen(dptr->name); |
1392 | 1393 | ||