aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slock.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/slock.c b/slock.c
index 9ec2f71..4980325 100644
--- a/slock.c
+++ b/slock.c
@@ -230,6 +230,13 @@ unlockscreen(Display *dpy, Lock *lock)
230 free(lock); 230 free(lock);
231} 231}
232 232
233static void
234cleanup(Display *dpy)
235{
236 free(locks);
237 XCloseDisplay(dpy);
238}
239
233static Lock * 240static Lock *
234lockscreen(Display *dpy, int screen) 241lockscreen(Display *dpy, int screen)
235{ 242{
@@ -349,8 +356,7 @@ main(int argc, char **argv) {
349 /* did we actually manage to lock anything? */ 356 /* did we actually manage to lock anything? */
350 if (nlocks == 0) { 357 if (nlocks == 0) {
351 /* nothing to protect */ 358 /* nothing to protect */
352 free(locks); 359 cleanup(dpy);
353 XCloseDisplay(dpy);
354 return 1; 360 return 1;
355 } 361 }
356 362
@@ -358,8 +364,7 @@ main(int argc, char **argv) {
358 if (argc > 0) { 364 if (argc > 0) {
359 switch (fork()) { 365 switch (fork()) {
360 case -1: 366 case -1:
361 free(locks); 367 cleanup(dpy);
362 XCloseDisplay(dpy);
363 die("slock: fork failed: %s\n", strerror(errno)); 368 die("slock: fork failed: %s\n", strerror(errno));
364 case 0: 369 case 0:
365 if (close(ConnectionNumber(dpy)) < 0) 370 if (close(ConnectionNumber(dpy)) < 0)
@@ -382,8 +387,7 @@ main(int argc, char **argv) {
382 for (s = 0; s < nscreens; s++) 387 for (s = 0; s < nscreens; s++)
383 unlockscreen(dpy, locks[s]); 388 unlockscreen(dpy, locks[s]);
384 389
385 free(locks); 390 cleanup(dpy);
386 XCloseDisplay(dpy);
387 391
388 return 0; 392 return 0;
389} 393}