diff --git a/src/config_parser.c b/src/config_parser.c index 4e66c911..a27cfc5f 100644 --- a/src/config_parser.c +++ b/src/config_parser.c @@ -1065,7 +1065,7 @@ bool parse_file(const char *f, bool use_nagbar) { int version = detect_version(buf); if (version == 3) { /* We need to convert this v3 configuration */ - char *converted = migrate_config(new, stbuf.st_size); + char *converted = migrate_config(new, strlen(new)); if (converted != NULL) { ELOG("\n"); ELOG("****************************************************************\n"); diff --git a/testcases/t/183-config-variables.t b/testcases/t/183-config-variables.t index 4b225214..d135ed59 100644 --- a/testcases/t/183-config-variables.t +++ b/testcases/t/183-config-variables.t @@ -95,7 +95,19 @@ EOT is(launch_get_border($config), 'none', 'no border'); +##################################################################### +# test that variables with longer name than value don't crash i3 with +# v3 to v4 conversion. +# See: #3076 +##################################################################### +$config = <<'EOT'; +set $var a +EOT + +my $pid = launch_with_config($config); +does_i3_live; +exit_gracefully($pid); done_testing;