X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fxlockmore.c;h=9927d6eee8c33c0449045bbe6dbf995bcae66734;hb=14463b6ad1ab1ccf81f9c33350b048e410ba94cb;hp=540bc264d861321699ba0a648650bcc5be7cb974;hpb=ce3185de9d9705e259f2b60dd4b5509007fa17d4;p=xscreensaver diff --git a/hacks/xlockmore.c b/hacks/xlockmore.c index 540bc264..9927d6ee 100644 --- a/hacks/xlockmore.c +++ b/hacks/xlockmore.c @@ -24,6 +24,8 @@ #define countof(x) (sizeof((x))/sizeof(*(x))) +#define MAX_COLORS (1L<<13) + extern ModeSpecOpt xlockmore_opts[]; extern const char *app_defaults; @@ -140,8 +142,11 @@ pre_merge_options (void) for (j = 0; j < xlockmore_opts->numvarsdesc; j++) { const char *def = xlockmore_opts->vars[j].def; - if (!def) def = "False"; - if (def == ((char*) 1)) def = "True"; + + if (!def) abort(); + if (!*def) abort(); + if (strlen(def) > 1000) abort(); + s = (char *) malloc (strlen (xlockmore_opts->vars[j].name) + strlen (def) + 10); strcpy (s, "*"); @@ -246,8 +251,8 @@ xlockmore_screenhack (Display *dpy, Window window, mi.npixels = get_integer_resource ("ncolors", "Integer"); if (mi.npixels <= 0) mi.npixels = 64; - else if (mi.npixels > 256) - mi.npixels = 256; + else if (mi.npixels > MAX_COLORS) + mi.npixels = MAX_COLORS; mi.colors = (XColor *) calloc (mi.npixels, sizeof (*mi.colors)); @@ -325,6 +330,7 @@ xlockmore_screenhack (Display *dpy, Window window, do { hack_draw (&mi); XSync(dpy, False); + screenhack_handle_events (dpy); if (mi.pause) usleep(mi.pause); mi.pause = orig_pause;