OSDN Git Service

cid_list の realloc の戻り値の処理を追加
authorよや <yoya@awm.jp>
Wed, 22 Jun 2011 19:04:06 +0000 (04:04 +0900)
committerよや <yoya@awm.jp>
Wed, 22 Jun 2011 19:04:06 +0000 (04:04 +0900)
(失敗した場合やポインタが変わった場合に対応)

src/swf_tag_shape.c

index f93f3d1..7dc1131 100644 (file)
@@ -219,6 +219,7 @@ swf_tag_shape_bitmap_get_refcid_list(swf_tag_t *tag, int *cid_list_num) {
                 return NULL; // Illegal!!!
             }
             switch (fill_style->type) {
+                void *tmp;
               case 0x40: // tilled  bitmap fill with smoothed edges
               case 0x41: // clipped bitmap fill with smoothed edges
               case 0x42: // tilled  bitmap fill with hard edges
@@ -226,7 +227,13 @@ swf_tag_shape_bitmap_get_refcid_list(swf_tag_t *tag, int *cid_list_num) {
                 if (fill_style->bitmap.bitmap_ref != 0xffff) {
                     if (cid_list_alloc <= *cid_list_num) {
                         cid_list_alloc *= 2;
-                        realloc(cid_list, cid_list_alloc);
+                        tmp = realloc(cid_list, cid_list_alloc);
+                        if (tmp == NULL) {
+                            fprintf(stderr, "swf_tag_shape_bitmap_get_refcid_list: Can't realloc memory (%p, %d)\n", cid_list, cid_list_alloc);
+                            free(cid_list);
+                            return NULL;
+                        }
+                        cid_list = tmp;
                     }
                     cid_list[*cid_list_num] = fill_style->bitmap.bitmap_ref;
                     *cid_list_num  = (*cid_list_num) + 1;