Fix segfault when calling "i3 -C".

Commit 287a0b4 introduced a segfault when validating the i3 config
as the root_screen will not be set in this case, causing a null
pointer dereference.

fixes #2144
This commit is contained in:
Ingo Bürk
2016-01-02 19:11:55 -05:00
parent 3853d1866b
commit b9b1a60b5d
8 changed files with 138 additions and 21 deletions

View File

@ -5,6 +5,7 @@ use strict;
use warnings;
use Exporter 'import';
use Time::HiRes qw(sleep);
use i3test::Util qw(slurp);
use v5.10;
our @EXPORT = qw(start_xserver);
@ -12,13 +13,6 @@ our @EXPORT = qw(start_xserver);
my @pids;
my $x_socketpath = '/tmp/.X11-unix/X';
# reads in a whole file
sub slurp {
open(my $fh, '<', shift) or return '';
local $/;
<$fh>;
}
# forks an X server process
sub fork_xserver {
my $keep_xserver_output = shift;
@ -86,8 +80,11 @@ sub start_xserver {
# Yeah, I know its non-standard, but Perls POSIX module doesnt have
# _SC_NPROCESSORS_CONF.
my $cpuinfo = slurp('/proc/cpuinfo');
my $num_cores = scalar grep { /model name/ } split("\n", $cpuinfo);
my $num_cores;
if (-e '/proc/cpuinfo') {
my $cpuinfo = slurp('/proc/cpuinfo');
$num_cores = scalar grep { /model name/ } split("\n", $cpuinfo);
}
# If /proc/cpuinfo does not exist, we fall back to 2 cores.
$num_cores ||= 2;