X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fwebcollage-cocoa.m;h=e8bc2b255beddaf1ac81a925481f350f6f847fed;hp=0b621c8c3c5f1cd8caff3ffedfa649357f474004;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hpb=88cfe534a698a0562e81345957a50714af1453bc diff --git a/hacks/webcollage-cocoa.m b/hacks/webcollage-cocoa.m index 0b621c8c..e8bc2b25 100644 --- a/hacks/webcollage-cocoa.m +++ b/hacks/webcollage-cocoa.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2014 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2015 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -96,6 +96,7 @@ display_image (Display *dpy, Window window, state *st, const char *file) CGFloat h = [image size].height; if (w <= 1 || h <= 1) { fprintf (stderr, "webcollage: unparsable image \"%s\"\n", file); + [image release]; return; } @@ -124,26 +125,26 @@ open_pipe (state *st) char *filter = get_string_resource (st->dpy, "filter", "Filter"); char *filter2 = get_string_resource (st->dpy, "filter2", "Filter2"); - av[ac++] = "webcollage"; - av[ac++] = "-cocoa"; + av[ac++] = strdup ("webcollage"); + av[ac++] = strdup ("-cocoa"); - av[ac++] = "-size"; + av[ac++] = strdup ("-size"); sprintf (buf, "%dx%d", st->xgwa.width, st->xgwa.height); av[ac++] = strdup (buf); - av[ac++] = "-timeout"; sprintf (buf, "%d", timeout); + av[ac++] = strdup ("-timeout"); sprintf (buf, "%d", timeout); av[ac++] = strdup (buf); - av[ac++] = "-delay"; sprintf (buf, "%d", delay); + av[ac++] = strdup ("-delay"); sprintf (buf, "%d", delay); av[ac++] = strdup (buf); - av[ac++] = "-opacity"; sprintf (buf, "%.2f", opacity); + av[ac++] = strdup ("-opacity"); sprintf (buf, "%.2f", opacity); av[ac++] = strdup (buf); if (filter && *filter) { - av[ac++] = "-filter"; + av[ac++] = strdup ("-filter"); av[ac++] = filter; } if (filter2 && *filter2) { - av[ac++] = "-filter2"; + av[ac++] = strdup ("-filter2"); av[ac++] = filter2; } @@ -207,6 +208,9 @@ open_pipe (state *st) } } + while (ac > 0) + free (av[--ac]); + if (! st->pipe_fd) abort(); st->pid = forked;