applied andres' multi-slock fix, thanks for spotting this issue

This commit is contained in:
garbeam@gmail.com 2012-08-02 21:54:18 +02:00
parent 4b4fcca1bc
commit d276b9b0e0

17
slock.c
View file

@ -1,3 +1,4 @@
/* See LICENSE file for license details. */ /* See LICENSE file for license details. */
#define _XOPEN_SOURCE 500 #define _XOPEN_SOURCE 500
#if HAVE_SHADOW_H #if HAVE_SHADOW_H
@ -211,9 +212,9 @@ lockscreen(Display *dpy, int screen) {
break; break;
usleep(1000); usleep(1000);
} }
running = (len > 0);
} }
running &= (len > 0);
if(!running) { if(!running) {
unlockscreen(dpy, lock); unlockscreen(dpy, lock);
lock = NULL; lock = NULL;
@ -257,10 +258,20 @@ main(int argc, char **argv) {
locks = malloc(sizeof(Lock *) * nscreens); locks = malloc(sizeof(Lock *) * nscreens);
if(locks == NULL) if(locks == NULL)
die("slock: malloc: %s", strerror(errno)); die("slock: malloc: %s", strerror(errno));
for(screen = 0; screen < nscreens; screen++) int nlocks = 0;
locks[screen] = lockscreen(dpy, screen); for(screen = 0; screen < nscreens; screen++) {
if ( (locks[screen] = lockscreen(dpy, screen)) != NULL)
nlocks++;
}
XSync(dpy, False); XSync(dpy, False);
/* Did we actually manage to lock something? */
if (nlocks == 0) { // nothing to protect
free(locks);
XCloseDisplay(dpy);
return 1;
}
/* Everything is now blank. Now wait for the correct password. */ /* Everything is now blank. Now wait for the correct password. */
#ifdef HAVE_BSD_AUTH #ifdef HAVE_BSD_AUTH
readpw(dpy); readpw(dpy);