else ctx->html_header_file = NULL;
 
        ctx->id_mapping.num = id_mapping.num;
+       ctx->id_mapping.rules = (_edg_wll_mapping_rule*)malloc(ctx->id_mapping.num * sizeof(_edg_wll_mapping_rule));
        for ( i = 0; i < ctx->id_mapping.num; i++ ) {
-               ctx->id_mapping.rules[i]->a = strdup(id_mapping.rules[i]->a);
-               ctx->id_mapping.rules[i]->b = strdup(id_mapping.rules[i]->b);
+               ctx->id_mapping.rules[i].a = strdup(id_mapping.rules[i].a);
+               ctx->id_mapping.rules[i].b = strdup(id_mapping.rules[i].b);
        }
 
        gettimeofday(&conn_start, 0);
 
        return 0;
 
     for (i = 0; i < mapping->num; i++) {
-       if (edg_wll_gss_equal_subj(a, mapping->rules[i]->a) &&
-           edg_wll_gss_equal_subj(b, mapping->rules[i]->b))
+       if (edg_wll_gss_equal_subj(a, mapping->rules[i].a) &&
+           edg_wll_gss_equal_subj(b, mapping->rules[i].b))
            return 1;
-       if (edg_wll_gss_equal_subj(a, mapping->rules[i]->b) &&
-           edg_wll_gss_equal_subj(b, mapping->rules[i]->a))
+       if (edg_wll_gss_equal_subj(a, mapping->rules[i].b) &&
+           edg_wll_gss_equal_subj(b, mapping->rules[i].a))
            return 1;
     }
     return 0;
     char line[4096];
     char *p, *a, *b;
     int ret;
-    struct _edg_wll_mapping_rule *rule = NULL, **tmp;
 
     fd = fopen(file, "r");
     if (fd == NULL)
            p++;
        b = p;
 
-       rule = malloc(sizeof(*rule));
-       if (rule == NULL) {
-           ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory");
-           goto end;
-       }
-       rule->a = strdup(a);
-       rule->b = strdup(b);
-       if (rule->a == NULL || rule->b == NULL) {
+
+       mapping->rules = realloc(mapping->rules, (mapping->num+1) * sizeof(_edg_wll_mapping_rule));
+       if (mapping->rules == NULL) {
            ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory");
            goto end;
        }
-
-       tmp = realloc(mapping->rules, (mapping->num+1) * sizeof(*tmp));
-       if (tmp == NULL) {
+       if (!(mapping->rules[mapping->num].a = strdup(a)) ||
+           !(mapping->rules[mapping->num].b = strdup(b))) {
            ret = edg_wll_SetError(ctx, ENOMEM, "Not enough memory");
            goto end;
        }
-       mapping->rules = tmp;
-       mapping->rules[mapping->num++] = rule;
-       rule = NULL;
+       mapping->num++;
     }
 
     ret = 0;