summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-08-15 15:13:17 +0000
committerThomas Martitz <kugel@rockbox.org>2011-08-15 15:13:17 +0000
commit4087875f1cf2677cc8542d7dd19cc3b4a8d26c2b (patch)
treef2417ea686fa668817ae1a14ea182cf1172917df
parentbf34cdfacb4546cdc2634dda402f010f2dc34f1c (diff)
downloadrockbox-4087875f1cf2677cc8542d7dd19cc3b4a8d26c2b.tar.gz
rockbox-4087875f1cf2677cc8542d7dd19cc3b4a8d26c2b.zip
Dircache: Fix bug introduced in r30308.
dircache_root wasn't initialized at all and the giving allocated_size passed to buffer_release_buffer() didn't account for alignment padding. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30318 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/common/dircache.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c
index d114a6ac62..f42c79d169 100644
--- a/firmware/common/dircache.c
+++ b/firmware/common/dircache.c
@@ -864,8 +864,9 @@ int dircache_build(int last_size)
864 * free bytes inbetween */ 864 * free bytes inbetween */
865 size_t got_size; 865 size_t got_size;
866 char* buf = buffer_get_buffer(&got_size); 866 char* buf = buffer_get_buffer(&got_size);
867 ALIGN_BUFFER(buf, got_size, sizeof(struct dircache_entry)); 867 dircache_root = (struct dircache_entry*)ALIGN_UP(buf,
868 d_names_start = d_names_end = (char*)dircache_root + got_size - 1; 868 sizeof(struct dircache_entry));
869 d_names_start = d_names_end = buf + got_size - 1;
869 dircache_size = 0; 870 dircache_size = 0;
870 generate_dot_d_names(); 871 generate_dot_d_names();
871 872
@@ -897,8 +898,8 @@ int dircache_build(int last_size)
897 dot -= offset; 898 dot -= offset;
898 dotdot -= offset; 899 dotdot -= offset;
899 900
900 /* equivalent to dircache_size + DIRCACHE_RESERVE */ 901 /* equivalent to dircache_size + DIRCACHE_RESERVE + align */
901 allocated_size = (d_names_end - (char*)dircache_root); 902 allocated_size = (d_names_end - buf);
902 reserve_used = 0; 903 reserve_used = 0;
903 904
904 buffer_release_buffer(allocated_size); 905 buffer_release_buffer(allocated_size);