From ae69a754244c4e475c8d2591772ca8e005071d83 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 18 Feb 2019 11:55:41 +0100 Subject: Update to 5.42 --- hacks/vermiculate.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'hacks/vermiculate.c') diff --git a/hacks/vermiculate.c b/hacks/vermiculate.c index 9364791..0accbd9 100644 --- a/hacks/vermiculate.c +++ b/hacks/vermiculate.c @@ -65,7 +65,7 @@ linedata; static const struct stringAndSpeed { - char *str; + const char * const str; int speed; } sampleStrings[] = @@ -99,7 +99,8 @@ struct state { int hei, wid, speed; Bool erasing, cleared, autopal; - char *instring; + char *oinstring; /* allocated */ + const char *instring; /* consumed */ int max_ticks; real sinof[degs], cosof[degs], tanof[degs]; @@ -435,7 +436,8 @@ maininit (struct state *st) if (!st->instring) { int n = random1 (sizeof (sampleStrings) / sizeof (sampleStrings[0])); - st->instring = sampleStrings[n].str; + if (st->oinstring) free (st->oinstring); + st->instring = st->oinstring = strdup (sampleStrings[n].str); st->speed = sampleStrings[n].speed; } st->boxh = 10; @@ -745,7 +747,8 @@ vermiculate_draw (Display *dpy, Window window, void *closure) if (tick++ > st->max_ticks && !had_instring) { tick = 0; - st->instring = 0; + if (st->oinstring) free (st->oinstring); + st->instring = st->oinstring = 0; maininit(st); st->reset_p = True; st->autopal = False; @@ -764,9 +767,12 @@ vermiculate_init (Display *d, Window w) st->dpy = d; st->window = w; st->reset_p = 1; - st->instring = get_string_resource (st->dpy, "instring", "Instring"); - if (st->instring && !*st->instring) - st->instring = 0; + st->oinstring = get_string_resource (st->dpy, "instring", "Instring"); + if (st->oinstring && !*st->oinstring) { + free (st->oinstring); + st->oinstring = 0; + } + st->instring = st->oinstring; st->max_ticks = get_integer_resource (st->dpy, "ticks", "Integer"); st->speed = get_integer_resource (st->dpy, "speed", "Speed"); @@ -1189,11 +1195,9 @@ static void vermiculate_free (Display *dpy, Window window, void *closure) { struct state *st = (struct state *) closure; - - if (st->point) - { - free(st->point); - } + XFreeGC (dpy, st->mygc); + if (st->oinstring) free (st->oinstring); + if (st->point) free(st->point); free (st); } -- cgit v1.2.3-55-g7522