ogg_afh_common.c: Check return value of ogg_page_granulepos().
[paraslash.git] / ogg_afh_common.c
index 12a1520..3e36bdd 100644 (file)
@@ -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;