From 7f6f418e5d5d31e2617b613c3cfe3a2da004b56c Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 25 Jan 2020 15:30:59 +0100 Subject: Fix semantics of slide_add_item --- libstorycode/gtk/gtkslideview.c | 4 ++-- libstorycode/slide.c | 5 +++-- libstorycode/slide.h | 2 +- src/slide_window.c | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libstorycode/gtk/gtkslideview.c b/libstorycode/gtk/gtkslideview.c index f4f4572..96e8053 100644 --- a/libstorycode/gtk/gtkslideview.c +++ b/libstorycode/gtk/gtkslideview.c @@ -882,7 +882,7 @@ static SlideItem *create_image(GtkSlideView *e, const char *filename, geom.w.len = w; geom.w.unit = LENGTH_UNIT; geom.h.len = h; geom.h.unit = LENGTH_UNIT; item = slide_item_image(fn, geom); - slide_add_item(e->slide, item); + item = slide_add_item(e->slide, item); return item; } @@ -917,7 +917,7 @@ static SlideItem *create_frame(GtkSlideView *e, double cx, double cy, geom.w.len = w; geom.w.unit = LENGTH_UNIT; geom.h.len = h; geom.h.unit = LENGTH_UNIT; item = slide_item_text(&runs, &nruns, 1, geom, ALIGN_INHERIT); - slide_add_item(e->slide, item); + item = slide_add_item(e->slide, item); return item; } diff --git a/libstorycode/slide.c b/libstorycode/slide.c index f5728c7..a3423c4 100644 --- a/libstorycode/slide.c +++ b/libstorycode/slide.c @@ -82,17 +82,18 @@ static SlideItem *slide_item_new() } -void slide_add_item(Slide *s, SlideItem *item) +SlideItem *slide_add_item(Slide *s, SlideItem *item) { SlideItem *new_items; new_items = realloc(s->items, (s->n_items+1)*sizeof(SlideItem)); - if ( new_items == NULL ) return; + if ( new_items == NULL ) return NULL; s->items = new_items; /* Copy contents and free top-level */ s->items[s->n_items++] = *item; free(item); + return &s->items[s->n_items-1]; } diff --git a/libstorycode/slide.h b/libstorycode/slide.h index f880c2e..2223a9f 100644 --- a/libstorycode/slide.h +++ b/libstorycode/slide.h @@ -38,7 +38,7 @@ typedef struct _slideitem SlideItem; extern Slide *slide_new(void); extern void slide_free(Slide *s); -extern void slide_add_item(Slide *s, SlideItem *item); +extern SlideItem *slide_add_item(Slide *s, SlideItem *item); extern void slide_delete_item(Slide *s, SlideItem *item); extern int slide_set_logical_size(Slide *s, double w, double h); diff --git a/src/slide_window.c b/src/slide_window.c index 75d40d2..dc5ce9a 100644 --- a/src/slide_window.c +++ b/src/slide_window.c @@ -69,7 +69,7 @@ static void insert_slidetitle_sig(GSimpleAction *action, GVariant *parameter, runs[0].text = strdup("Slide title"); item = slide_item_slidetitle(&runs, &nruns, 1); - slide_add_item(sw->slide, item); + item = slide_add_item(sw->slide, item); gtk_slide_view_set_slide(sw->sv, sw->slide); } @@ -120,7 +120,7 @@ static gint insert_image_response_sig(GtkWidget *d, gint response, SlideWindow * } item = slide_item_image(fn, geom); - slide_add_item(sw->slide, item); + item = slide_add_item(sw->slide, item); } gtk_widget_destroy(d); -- cgit v1.2.3