Skip to content

Commit 24c17a3

Browse files
committed
schema compile BUGFIX compile all implemented modules
1 parent 9b0539d commit 24c17a3

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/schema_compile.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1543,11 +1543,13 @@ lys_compile_depset_r(struct ly_ctx *ctx, struct ly_set *dep_set, struct lys_glob
15431543
LY_CHECK_GOTO(ret = lys_compile(mod, &unres->ds_unres), cleanup);
15441544
}
15451545

1546+
resolve_unres:
15461547
/* resolve dep set unres */
15471548
ret = lys_compile_unres_depset(ctx, unres);
1549+
lys_compile_unres_depset_erase(ctx, unres);
1550+
15481551
if (ret == LY_ERECOMPILE) {
1549-
/* new module is implemented, discard current dep set unres and recompile the whole dep set */
1550-
lys_compile_unres_depset_erase(ctx, unres);
1552+
/* new module is implemented referencing previously compiled modules, recompile the whole dep set */
15511553
return lys_compile_depset_r(ctx, dep_set, unres);
15521554
} else if (ret) {
15531555
/* error */
@@ -1557,6 +1559,13 @@ lys_compile_depset_r(struct ly_ctx *ctx, struct ly_set *dep_set, struct lys_glob
15571559
/* success, unset the flags of all the modules in the dep set */
15581560
for (i = 0; i < dep_set->count; ++i) {
15591561
mod = dep_set->objs[i];
1562+
1563+
if (mod->to_compile && !mod->compiled) {
1564+
/* new module is implemented but does not require recompilation of the whole dep set */
1565+
LY_CHECK_GOTO(ret = lys_compile(mod, &unres->ds_unres), cleanup);
1566+
goto resolve_unres;
1567+
}
1568+
15601569
mod->to_compile = 0;
15611570
}
15621571

0 commit comments

Comments
 (0)