chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a few resource leaks in error paths
[elogind.git]
/
src
/
sleep
/
sleep.c
diff --git
a/src/sleep/sleep.c
b/src/sleep/sleep.c
index b6a6f60d03452fb9680a156717938e70d7018039..bf673549f1a835114fd4b9e096a7c330c5f93de2 100644
(file)
--- a/
src/sleep/sleep.c
+++ b/
src/sleep/sleep.c
@@
-57,15
+57,14
@@
static int write_mode(char **modes) {
return r;
}
return r;
}
-static int write_state(FILE *f0, char **states) {
- FILE _cleanup_fclose_ *f = f0;
+static int write_state(FILE **f, char **states) {
char **state;
int r = 0;
STRV_FOREACH(state, states) {
int k;
char **state;
int r = 0;
STRV_FOREACH(state, states) {
int k;
- k = write_string_to_file(f, *state);
+ k = write_string_to_file(
*
f, *state);
if (k == 0)
return 0;
log_debug("Failed to write '%s' to /sys/power/state: %s",
if (k == 0)
return 0;
log_debug("Failed to write '%s' to /sys/power/state: %s",
@@
-73,9
+72,9
@@
static int write_state(FILE *f0, char **states) {
if (r == 0)
r = k;
if (r == 0)
r = k;
- fclose(f);
- f = fopen("/sys/power/state", "we");
- if (!f) {
+ fclose(
*
f);
+
*
f = fopen("/sys/power/state", "we");
+ if (!
*
f) {
log_error("Failed to open /sys/power/state: %m");
return -errno;
}
log_error("Failed to open /sys/power/state: %m");
return -errno;
}
@@
-87,7
+86,7
@@
static int write_state(FILE *f0, char **states) {
static int execute(char **modes, char **states) {
char* arguments[4];
int r;
static int execute(char **modes, char **states) {
char* arguments[4];
int r;
-
FILE *f
;
+
_cleanup_fclose_ FILE *f = NULL
;
const char* note = strappenda("SLEEP=", arg_verb);
/* This file is opened first, so that if we hit an error,
const char* note = strappenda("SLEEP=", arg_verb);
/* This file is opened first, so that if we hit an error,
@@
-115,7
+114,7
@@
static int execute(char **modes, char **states) {
note,
NULL);
note,
NULL);
- r = write_state(f, states);
+ r = write_state(
&
f, states);
if (r < 0)
return r;
if (r < 0)
return r;