Author: mkhl Date: 2006-07-08 17:37:13 +0000 (Sat, 08 Jul 2006) New Revision: 16880
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16880 Log: Fix assignment of mapped subtrees to wrong places. Martin Modified: branches/SOC/mkhl/ldb-map/modules/ldb_map.c Changeset: Modified: branches/SOC/mkhl/ldb-map/modules/ldb_map.c =================================================================== --- branches/SOC/mkhl/ldb-map/modules/ldb_map.c 2006-07-08 17:33:19 UTC (rev 16879) +++ branches/SOC/mkhl/ldb-map/modules/ldb_map.c 2006-07-08 17:37:13 UTC (rev 16880) @@ -1094,7 +1094,7 @@ struct ldb_parse_tree **new, const struct ldb_parse_tree *tree) { - int i, ret; + int i, j, ret; /* prepare new tree */ *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree)); @@ -1113,6 +1113,7 @@ } /* generate list of local subtrees */ + j = 0; for (i = 0; i < tree->u.list.num_elements; i++) { struct ldb_parse_tree *child; ret = keep_local_subtree(module, *new, &child, @@ -1121,16 +1122,17 @@ goto failed; if (child) { - (*new)->u.list.elements[i] = child; - (*new)->u.list.num_elements++; + (*new)->u.list.elements[j] = child; + j++; } } /* prune tree without subtrees */ - if ((*new)->u.list.num_elements == 0) + if (j == 0) goto prune; /* fix subtree list size */ + (*new)->u.list.num_elements = j; (*new)->u.list.elements = talloc_realloc(*new, (*new)->u.list.elements, struct ldb_parse_tree *, (*new)->u.list.num_elements); @@ -1266,7 +1268,7 @@ struct ldb_parse_tree **new, const struct ldb_parse_tree *tree) { - int i, ret; + int i, j, ret; /* prepare new tree */ *new = talloc_memdup(mem_ctx, tree, sizeof(struct ldb_parse_tree)); @@ -1285,6 +1287,7 @@ } /* generate list of remote subtrees */ + j = 0; for (i = 0; i < tree->u.list.num_elements; i++) { struct ldb_parse_tree *child; ret = map_local_subtree(module, *new, &child, @@ -1293,16 +1296,17 @@ goto failed; if (child) { - (*new)->u.list.elements[i] = child; - (*new)->u.list.num_elements++; + (*new)->u.list.elements[j] = child; + j++; } } /* prune tree without subtrees */ - if ((*new)->u.list.num_elements == 0) + if (j == 0) goto prune; /* fix subtree list size */ + (*new)->u.list.num_elements = j; (*new)->u.list.elements = talloc_realloc(*new, (*new)->u.list.elements, struct ldb_parse_tree *, (*new)->u.list.num_elements);
