registry: simplify strdup() error handling
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 18 Mar 2021 23:46:15 +0000 (09:46 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 4 May 2023 08:46:16 +0000 (18:46 +1000)
strdup() is the least likely call to fail here, let's move it to the bottom so
we don't need to worry about the allocated string.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/registry.c

index 0c42a3b..e23e87b 100644 (file)
@@ -564,18 +564,14 @@ rxkb_context_include_path_append(struct rxkb_context *ctx, const char *path)
         return false;
     }
 
-    tmp = strdup(path);
-    if (!tmp)
-        goto err;
-
     err = stat(path, &stat_buf);
     if (err != 0)
-        goto err;
+        return false;
     if (!S_ISDIR(stat_buf.st_mode))
-        goto err;
+        return false;
 
     if (!check_eaccess(path, R_OK | X_OK))
-        goto err;
+        return false;
 
     /* Pre-filter for the 99.9% case - if we can't assemble the default ruleset
      * path, complain here instead of during parsing later. The niche cases
@@ -583,15 +579,15 @@ rxkb_context_include_path_append(struct rxkb_context *ctx, const char *path)
      */
     if (!snprintf_safe(rules, sizeof(rules), "%s/rules/%s.xml",
                        path, DEFAULT_XKB_RULES))
-        goto err;
+        return false;
+
+    tmp = strdup(path);
+    if (!tmp)
+        return false;
 
     darray_append(ctx->includes, tmp);
 
     return true;
-
-err:
-    free(tmp);
-    return false;
 }
 
 XKB_EXPORT bool