More fixes for Centos vala array property bug
[moonshot-ui.git] / src / moonshot-local-flat-file-store.vala
index 51d3986..99874fc 100644 (file)
@@ -104,12 +104,15 @@ public class LocalFlatFileStore : Object, IIdentityCardStore {
     public void store_id_cards () {
         var key_file = new KeyFile ();
         foreach (IdCard id_card in this.id_card_list) {
-            string[] rules_patterns = new string[id_card.rules.length];
-            string[] rules_always_conf = new string[id_card.rules.length];
+            /* workaround for Centos vala array property bug: use temp arrays */
+            var rules = id_card.rules;
+            var services = id_card.services;
+            string[] rules_patterns = new string[rules.length];
+            string[] rules_always_conf = new string[rules.length];
             
-            for (int i=0; i<id_card.rules.length; i++) {
-              rules_patterns[i] = id_card.rules[i].pattern;
-              rules_always_conf[i] = id_card.rules[i].always_confirm;
+            for (int i=0; i<rules.length; i++) {
+              rules_patterns[i] = rules[i].pattern;
+              rules_always_conf[i] = rules[i].always_confirm;
             }
 
             key_file.set_string (id_card.display_name, "Issuer", id_card.issuer ?? "");
@@ -119,9 +122,9 @@ public class LocalFlatFileStore : Object, IIdentityCardStore {
               key_file.set_string (id_card.display_name, "Password", id_card.password);
             else
               key_file.set_string (id_card.display_name, "Password", "");
-            key_file.set_string_list (id_card.display_name, "Services", id_card.services ?? {});
+            key_file.set_string_list (id_card.display_name, "Services", services ?? {});
 
-            if (id_card.rules.length > 0) {
+            if (rules.length > 0) {
               key_file.set_string_list (id_card.display_name, "Rules-Patterns", rules_patterns);
               key_file.set_string_list (id_card.display_name, "Rules-AlwaysConfirm", rules_always_conf);
             }