if (img->flags & FLAG_LOOPING)
img->pub.leadin = 0;
+ if (img->pub.leadin >= img->pub.frames) {
+ lbx_error_raise(LBX_EFORMAT);
+ free(img);
+ return NULL;
+ }
+
return img;
}
*/
_lbx_assert(img->wtf == 0); /* version? */
_lbx_assert(img->wtf2 == 0); /* very likely is simply reserved. */
- _lbx_assert(img->pub.frames > img->pub.leadin);
_lbx_assert(!(img->flags & ~FLAG_ALL));
/* Read all offsets. Should be merged with identical code in lbx.c */
return -1;
}
-void lbx_img_getinfo(struct lbx_image *pub, struct lbx_imginfo *info)
-{
- struct lbx_image_priv *img = (struct lbx_image_priv *)pub;
-
- *info = (struct lbx_imginfo) { 0 };
-
- /* There seems to be two ways of specifying that an image loops. */
- if (img->flags & FLAG_LOOPING) {
- info->loopstart = 0;
- info->looping = 1;
- } else if (img->pub.leadin != pub->frames - 1) {
- info->loopstart = img->pub.leadin;
- info->looping = 1;
- }
-}
-
int lbx_img_close(struct lbx_image *pub)
{
struct lbx_image_priv *img = (struct lbx_image_priv *)pub;