X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fpath.c;h=65913f87591cb41848c08381313fb6ec905f00a5;hp=7bbbf1f8eb4a691f02bc0522d22a6660acd99ac2;hb=a163db44190dea7c34112f28f32cdff664d79b06;hpb=f8c16f42fb6d8e0425ff2b867aa9af07d9b6b4ba diff --git a/src/core/path.c b/src/core/path.c index 7bbbf1f8e..65913f875 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -118,7 +118,7 @@ void path_spec_unwatch(PathSpec *s, Unit *u) { } int path_spec_fd_event(PathSpec *s, uint32_t events) { - uint8_t *buf = NULL; + uint8_t _cleanup_free_ *buf = NULL; struct inotify_event *e; ssize_t k; int l; @@ -126,30 +126,24 @@ int path_spec_fd_event(PathSpec *s, uint32_t events) { if (events != EPOLLIN) { log_error("Got invalid poll event on inotify."); - r = -EINVAL; - goto out; + return -EINVAL; } if (ioctl(s->inotify_fd, FIONREAD, &l) < 0) { log_error("FIONREAD failed: %m"); - r = -errno; - goto out; + return -errno; } assert(l > 0); buf = malloc(l); - if (!buf) { - log_error("Failed to allocate buffer: %m"); - r = -errno; - goto out; - } + if (!buf) + return log_oom(); k = read(s->inotify_fd, buf, l); if (k < 0) { log_error("Failed to read inotify event: %m"); - r = -errno; - goto out; + return -errno; } e = (struct inotify_event*) buf; @@ -167,8 +161,7 @@ int path_spec_fd_event(PathSpec *s, uint32_t events) { e = (struct inotify_event*) ((uint8_t*) e + step); k -= step; } -out: - free(buf); + return r; }