libbluray | branch: master | tourettes <[email protected]> | Sun Feb 15 18:06:42 2015 +0200| [72dc0db233cfbb6c3e318280fbb846e0f2107ead] | committer: hpi1
Changed disc_read_file method's return type to size_t Failed read is indicated with zero return value > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=72dc0db233cfbb6c3e318280fbb846e0f2107ead --- src/libbluray/bdnav/meta_parse.c | 4 ++-- src/libbluray/bluray.c | 4 ++-- src/libbluray/disc/disc.c | 17 ++++++++++------- src/libbluray/disc/disc.h | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/libbluray/bdnav/meta_parse.c b/src/libbluray/bdnav/meta_parse.c index d0d3c69..50b8c75 100644 --- a/src/libbluray/bdnav/meta_parse.c +++ b/src/libbluray/bdnav/meta_parse.c @@ -153,11 +153,11 @@ META_ROOT *meta_parse(BD_DISC *disc) uint8_t i; for (i = 0; i < root->dl_count; i++) { uint8_t *data = NULL; - int64_t size = 0; + size_t size; size = disc_read_file(disc, "BDMV" DIR_SEP "META" DIR_SEP "DL", root->dl_entries[i].filename, &data); - if (!data) { + if (!data || size == 0) { BD_DEBUG(DBG_DIR, "Failed to read BDMV/META/DL/%s\n", root->dl_entries[i].filename); } else { doc = xmlReadMemory((char*)data, (int)size, NULL, NULL, 0); diff --git a/src/libbluray/bluray.c b/src/libbluray/bluray.c index e1cfbc6..4f950a2 100644 --- a/src/libbluray/bluray.c +++ b/src/libbluray/bluray.c @@ -1934,8 +1934,8 @@ static int _preload_textst_subpath(BLURAY *bd) for (ii = 0; ii < bd->st_textst.clip->cl->font_info.font_count; ii++) { char *file = str_printf("%s.otf", bd->st_textst.clip->cl->font_info.font[ii].file_id); uint8_t *data = NULL; - int64_t size = disc_read_file(bd->disc, "BDMV" DIR_SEP "AUXDATA", file, &data); - if (data && gc_add_font(bd->graphics_controller, data, size) < 0) { + size_t size = disc_read_file(bd->disc, "BDMV" DIR_SEP "AUXDATA", file, &data); + if (data && size > 0 && gc_add_font(bd->graphics_controller, data, size) < 0) { X_FREE(data); } X_FREE(file); diff --git a/src/libbluray/disc/disc.c b/src/libbluray/disc/disc.c index c26ee8a..1de00b1 100644 --- a/src/libbluray/disc/disc.c +++ b/src/libbluray/disc/disc.c @@ -350,7 +350,7 @@ BD_DIR_H *disc_open_dir(BD_DISC *p, const char *dir) return _combine_dirs(dp_ovl, dp_rom); } -int64_t disc_read_file(BD_DISC *disc, const char *dir, const char *file, +size_t disc_read_file(BD_DISC *disc, const char *dir, const char *file, uint8_t **data) { BD_FILE_H *fp; @@ -360,26 +360,29 @@ int64_t disc_read_file(BD_DISC *disc, const char *dir, const char *file, fp = disc_open_file(disc, dir, file); if (!fp) { - return -1; + return 0; } size = file_size(fp); - if (size > 0) { - *data = malloc(size); + if (size > 0 && size < BD_MAX_SSIZE) { + *data = malloc((size_t)size); if (*data) { int64_t got = file_read(fp, *data, size); if (got != size) { BD_DEBUG(DBG_FILE | DBG_CRIT, "Error reading file %s from %s\n", file, dir); X_FREE(*data); - size = -1; + size = 0; } } else { - size = -1; + size = 0; } } + else { + size = 0; + } file_close(fp); - return size; + return (size_t)size; } /* diff --git a/src/libbluray/disc/disc.h b/src/libbluray/disc/disc.h index 6ce8603..3e20c43 100644 --- a/src/libbluray/disc/disc.h +++ b/src/libbluray/disc/disc.h @@ -57,7 +57,7 @@ BD_PRIVATE struct bd_file_s *disc_open_path(BD_DISC *disc, const char *path); BD_PRIVATE struct bd_dir_s *disc_open_dir (BD_DISC *disc, const char *dir); /* Read VFS file */ -BD_PRIVATE int64_t disc_read_file(BD_DISC *disc, const char *dir, const char *file, +BD_PRIVATE size_t disc_read_file(BD_DISC *disc, const char *dir, const char *file, uint8_t **data); /* Update virtual package */ _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
