]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - ogg_afh_common.c
ogg_afh_common.c: Check return value of ogg_page_granulepos().
[paraslash.git] / ogg_afh_common.c
index 4fc37952a61fcb92a8a6a9c74978b501525716bd..3e36bdd5b1e9d3615695f975541bf69c0cc05093 100644 (file)
@@ -125,8 +125,8 @@ int oac_get_file_info(char *map, size_t numbytes, struct afh_info *afhi,
        ogg_page op;
        char *buf;
        int ret, i, j, frames_per_chunk, ct_size, prev_pageno = 0;
-       long long unsigned granule = 0, granule_skip = 0, num_frames = 0;
-       int64_t prev_granule = 0;
+       long long unsigned granule_skip = 0, num_frames = 0;
+       int64_t granule = 0, prev_granule = 0;
 
        ogg_sync_init(&oss);
        ret = -E_OGG_SYNC;
@@ -148,8 +148,9 @@ int oac_get_file_info(char *map, size_t numbytes, struct afh_info *afhi,
        /* count ogg pages and get duration of the file */
        for (i = 0; ogg_sync_pageseek(&oss, &op) > 0; i++) {
                int this_pageno = ogg_page_pageno(&op);
-
-               granule = ogg_page_granulepos(&op);
+               int64_t this_granule = ogg_page_granulepos(&op);
+               if (this_granule >= 0)
+                       granule = this_granule;
                if (i > 0 && this_pageno != prev_pageno + 1) /* hole */
                        granule_skip += granule - prev_granule;
                prev_pageno = this_pageno;