Ensure we don't access invalid pointers

This commit is contained in:
Chris Young 2016-03-22 19:45:15 +00:00
parent 215d1bec58
commit 8a7d030af7
2 changed files with 15 additions and 5 deletions

View File

@ -59,7 +59,7 @@ struct bitmap {
PLANEPTR native_mask;
Object *dto;
struct nsurl *url; /* temporary storage space */
const char *title; /* temporary storage space */
char *title; /* temporary storage space */
ULONG *icondata; /* for appicons */
};
@ -143,10 +143,16 @@ void amiga_bitmap_destroy(void *bitmap)
if(bm->native_mask) FreeRaster(bm->native_mask, bm->width, bm->height);
FreeVec(bm->pixdata);
if(bm->url) nsurl_unref(bm->url);
if(bm->title) free(bm->title);
bm->pixdata = NULL;
bm->nativebm = NULL;
bm->native_mask = NULL;
bm->dto = NULL;
bm->url = NULL;
bm->title = NULL;
ami_misc_itempool_free(pool_bitmap, bm, sizeof(struct bitmap));
bm = NULL;
@ -644,12 +650,14 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
void ami_bitmap_set_url(struct bitmap *bm, struct nsurl *url)
{
bm->url = url;
if(bm->url != NULL) return;
bm->url = nsurl_ref(url);
}
void ami_bitmap_set_title(struct bitmap *bm, const char *title)
{
bm->title = title;
if(bm->title != NULL) return;
bm->title = strdup(title);
}
ULONG *ami_bitmap_get_icondata(struct bitmap *bm)

View File

@ -46,7 +46,8 @@ struct bitmap *ami_bitmap_from_datatype(char *filename);
* \param bm a bitmap, as returned by bitmap_create()
* \param title a pointer to a title string
*
* It is assumed that this is freed elsewhere after the bitmap is destroyed.
* A reference will be kept by the bitmap object.
* The URL can only ever be set once for a bitmap.
*/
void ami_bitmap_set_url(struct bitmap *bm, struct nsurl *url);
@ -56,7 +57,8 @@ void ami_bitmap_set_url(struct bitmap *bm, struct nsurl *url);
* \param bm a bitmap, as returned by bitmap_create()
* \param title a pointer to a title string
*
* It is assumed that this is freed elsewhere after the bitmap is destroyed.
* This is copied by the bitmap object.
* The title can only ever be set once for a bitmap.
*/
void ami_bitmap_set_title(struct bitmap *bm, const char *title);