chiark / gitweb /
udev: skip timestamp check if rules are already free()d during reload
[elogind.git] / src / udev / udev-rules.c
index 22b91c67974cc6004aec3381fa4e4870daa1e2ef..b5b54dd0431d5e021ef1cabac629869eb7203d4a 100644 (file)
@@ -31,6 +31,8 @@
 #include <time.h>
 
 #include "udev.h"
+#include "path-util.h"
+#include "conf-files.h"
 
 #define PREALLOC_TOKEN          2048
 #define PREALLOC_STRBUF         32 * 1024
@@ -1763,7 +1765,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
                 log_error("failed to build config directory array");
                 return NULL;
         }
-        if (!strv_path_canonicalize(rules->dirs)) {
+        if (!path_strv_canonicalize(rules->dirs)) {
                 log_error("failed to canonicalize config directories\n");
                 return NULL;
         }
@@ -1856,6 +1858,9 @@ bool udev_rules_check_timestamp(struct udev_rules *rules)
         unsigned int i;
         bool changed = false;
 
+        if (rules == NULL)
+                goto out;
+
         for (i = 0; rules->dirs[i]; i++) {
                 struct stat stats;
 
@@ -1874,7 +1879,7 @@ bool udev_rules_check_timestamp(struct udev_rules *rules)
                 /* update timestamp */
                 rules->dirs_ts_usec[i] = ts_usec(&stats.st_mtim);
         }
-
+out:
         return changed;
 }