From 11f2129d8c19639895db118e7fde201dcc4747a5 Mon Sep 17 00:00:00 2001
From: Bernardo Innocenti <bernie@codewiz.org>
Date: Mon, 1 Oct 2007 22:29:15 +0200
Subject: [PATCH] config/hal: really pass xkb_rules, plug leak on xkb_variant and remove NULL checks on xfree()
Organization: One Laptop Per Child

---
 config/hal.c |   27 +++++++++++----------------
 1 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/config/hal.c b/config/hal.c
index d7835e6..3479be9 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -219,6 +219,8 @@ device_added(LibHalContext *hal_ctx, const char *udi)
         goto unwind;
     sprintf(config_info, "hal:%s", udi);
 
+    if (xkb_rules)
+        add_option(&options, "xkb_rules", xkb_rules);
     if (xkb_model)
         add_option(&options, "xkb_model", xkb_model);
     if (xkb_layout)
@@ -237,22 +239,15 @@ device_added(LibHalContext *hal_ctx, const char *udi)
         dev->config_info = xstrdup(config_info);
 
 unwind:
-    if (path)
-        xfree(path);
-    if (driver)
-        xfree(driver);
-    if (name)
-        xfree(name);
-    if (xkb_rules)
-        xfree(xkb_rules);
-    if (xkb_model)
-        xfree(xkb_model);
-    if (xkb_layout)
-        xfree(xkb_layout);
-    if (xkb_options)
-        xfree(xkb_options);
-    if (config_info)
-        xfree(config_info);
+   xfree(path);
+   xfree(driver);
+   xfree(name);
+   xfree(xkb_rules);
+   xfree(xkb_model);
+   xfree(xkb_layout);
+   xfree(xkb_variant);
+   xfree(xkb_options);
+   xfree(config_info);
 
 out_error:
     dbus_error_free(&error);
-- 
1.5.3.3

