From: Benjamin Robin Date: Wed, 6 May 2020 19:24:05 +0000 (+0200) Subject: tree-wide: Workaround -Wnonnull GCC bug X-Git-Tag: v246-rc1~425 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=08f468567d9ebb56e04eb5585eda42add6cb4cb5;p=thirdparty%2Fsystemd.git tree-wide: Workaround -Wnonnull GCC bug See issue #6119 --- diff --git a/src/core/manager.c b/src/core/manager.c index 501e37339b8..7c207bed6e7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1968,7 +1968,6 @@ int manager_load_unit_prepare( int r; assert(m); - assert(name || path); assert(_ret); /* This will prepare the unit for loading, but not actually @@ -1977,8 +1976,13 @@ int manager_load_unit_prepare( if (path && !is_path(path)) return sd_bus_error_setf(e, SD_BUS_ERROR_INVALID_ARGS, "Path %s is not absolute.", path); - if (!name) + if (!name) { + /* 'name' and 'path' must not both be null. Check here 'path' using assert_se() to + * workaround a bug in gcc that generates a -Wnonnull warning when calling basename(), + * but this cannot be possible in any code path (See #6119). */ + assert_se(path); name = basename(path); + } t = unit_name_to_type(name); diff --git a/src/shared/install.c b/src/shared/install.c index ec2b99ab98d..21ad5aab36a 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1013,10 +1013,14 @@ static int install_info_add( int r; assert(c); - assert(name || path); - if (!name) + if (!name) { + /* 'name' and 'path' must not both be null. Check here 'path' using assert_se() to + * workaround a bug in gcc that generates a -Wnonnull warning when calling basename(), + * but this cannot be possible in any code path (See #6119). */ + assert_se(path); name = basename(path); + } if (!unit_name_is_valid(name, UNIT_NAME_ANY)) return -EINVAL;