object: Make INIT() a compound statement
This forces the use of a semicolon after INIT() and makes existing ones,
which was the case for basically all instances, necessary so e.g.
sonarcloud won't complain about an empty statement after every one of
them.
By evaluating to the allocated object, it would theoretically also allow
constructs like this:
struct_t *this;
return INIT(this,
.a = x,
.b = y,
);
or this:
array_insert(a, ARRAY_TAIL, INIT(this,
.a = x,
.b = y,
));
This commit is contained in:
@@ -266,7 +266,7 @@ static array_t *select_signature_schemes(keymat_v2_t *keymat,
|
||||
{
|
||||
INIT(config,
|
||||
.scheme = scheme,
|
||||
)
|
||||
);
|
||||
array_insert(selected, ARRAY_TAIL, config);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
/**
|
||||
* Object allocation/initialization macro, using designated initializer.
|
||||
*/
|
||||
#define INIT(this, ...) { (this) = malloc(sizeof(*(this))); \
|
||||
*(this) = (typeof(*(this))){ __VA_ARGS__ }; }
|
||||
#define INIT(this, ...) ({ (this) = malloc(sizeof(*(this))); \
|
||||
*(this) = (typeof(*(this))){ __VA_ARGS__ }; (this); })
|
||||
|
||||
/**
|
||||
* Aligning version of INIT().
|
||||
|
||||
@@ -78,7 +78,7 @@ static package_t* create_package(swid_gen_info_t *info, chunk_t package,
|
||||
.package = strndup(package.ptr, package.len),
|
||||
.version = strndup(version.ptr, version.len),
|
||||
.old_version = strndup(old_version.ptr, old_version.len),
|
||||
)
|
||||
);
|
||||
|
||||
this->sw_id = info->create_sw_id(info, this->package, this->version);
|
||||
if (old_version.len)
|
||||
|
||||
Reference in New Issue
Block a user