vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Oct 25 20:58:36 2016 +0300| [6fe40361ef313c2f2c24e298cec9b315978ef885] | committer: Rémi Denis-Courmont
cache: store string nul termination in cache files This enables: - reading the strings directly from memory mapped files, - distinguishing NULL from "". > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6fe40361ef313c2f2c24e298cec9b315978ef885 --- src/modules/cache.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/modules/cache.c b/src/modules/cache.c index cbfa8e5..6555194 100644 --- a/src/modules/cache.c +++ b/src/modules/cache.c @@ -56,7 +56,7 @@ #ifdef HAVE_DYNAMIC_PLUGINS /* Sub-version number * (only used to avoid breakage in dev version when cache structure changes) */ -#define CACHE_SUBVERSION_NUM 23 +#define CACHE_SUBVERSION_NUM 24 /* Cache filename */ #define CACHE_NAME "plugins.dat" @@ -112,17 +112,16 @@ static int vlc_cache_load_string(char **restrict p, block_t *file) return 0; } - char *str = malloc(size + 1); + char *str = malloc(size); if (unlikely(str == NULL)) return -1; - if (vlc_cache_load_immediate(str, file, size)) + if (vlc_cache_load_immediate(str, file, size) || str[size - 1] != '\0') { free(str); return -1; } - str[size] = '\0'; *p = str; return 0; } @@ -437,10 +436,10 @@ error: static int CacheSaveString (FILE *file, const char *str) { - uint16_t size = (str != NULL) ? strlen (str) : 0; + uint16_t size = (str != NULL) ? (strlen (str) + 1) : 0; SAVE_IMMEDIATE (size); - if (size != 0 && fwrite (str, 1, size, file) != size) + if (size != 0 && fwrite(str, 1, size, file) != size) { error: return -1; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
