projects
/
xscreensaver
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
http://ftp.x.org/contrib/applications/xscreensaver-3.23.tar.gz
[xscreensaver]
/
hacks
/
xlockmore.c
diff --git
a/hacks/xlockmore.c
b/hacks/xlockmore.c
index 540bc264d861321699ba0a648650bcc5be7cb974..9927d6eee8c33c0449045bbe6dbf995bcae66734 100644
(file)
--- a/
hacks/xlockmore.c
+++ b/
hacks/xlockmore.c
@@
-24,6
+24,8
@@
#define countof(x) (sizeof((x))/sizeof(*(x)))
#define countof(x) (sizeof((x))/sizeof(*(x)))
+#define MAX_COLORS (1L<<13)
+
extern ModeSpecOpt xlockmore_opts[];
extern const char *app_defaults;
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;
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, "*");
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;
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));
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);
do {
hack_draw (&mi);
XSync(dpy, False);
+ screenhack_handle_events (dpy);
if (mi.pause)
usleep(mi.pause);
mi.pause = orig_pause;
if (mi.pause)
usleep(mi.pause);
mi.pause = orig_pause;