mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
sd-device: never return NULL+0
It is highly confusing if a getter function returns 0, but the value is set to NULL. This, right now, triggers assertions as code relies on the returned values to be non-NULL. Like with sd-bus-creds and friends, return 0 only if a value is actually available. Discussed with Tom, and actually fixes real bugs as in #512.
This commit is contained in:
parent
ab822b624b
commit
bf4c113e17
@ -791,6 +791,9 @@ _public_ int sd_device_get_subsystem(sd_device *device, const char **ret) {
|
||||
device->subsystem_set = true;
|
||||
}
|
||||
|
||||
if (!device->subsystem)
|
||||
return -ENOENT;
|
||||
|
||||
*ret = device->subsystem;
|
||||
|
||||
return 0;
|
||||
@ -908,6 +911,9 @@ _public_ int sd_device_get_driver(sd_device *device, const char **ret) {
|
||||
return log_debug_errno(r, "sd-device: could not set driver for %s: %m", device->devpath);
|
||||
}
|
||||
|
||||
if (!device->driver)
|
||||
return -ENOENT;
|
||||
|
||||
*ret = device->driver;
|
||||
|
||||
return 0;
|
||||
@ -1002,6 +1008,8 @@ _public_ int sd_device_get_sysname(sd_device *device, const char **ret) {
|
||||
return r;
|
||||
}
|
||||
|
||||
assert_return(device->sysname, -ENOENT);
|
||||
|
||||
*ret = device->sysname;
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user