From: Behdad Esfahbod Date: Mon, 2 Mar 2009 09:55:37 +0000 (+0330) Subject: [fc-lang] Continue parsing after an "include" (#20179) X-Git-Tag: 2.7.0~69 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=f6993c880345b45abc0f7e7f0bb14dd0ddae0caa;p=fontconfig.git [fc-lang] Continue parsing after an "include" (#20179) --- diff --git a/fc-lang/fc-lang.c b/fc-lang/fc-lang.c index 40f3bfe..8f50133 100644 --- a/fc-lang/fc-lang.c +++ b/fc-lang/fc-lang.c @@ -138,18 +138,25 @@ scan (FILE *f, char *file, FcCharSetFreezer *freezer) { if (!strncmp (line, "include", 7)) { - file = strchr (line, ' '); - if (!file) - fatal (line, lineno, + FILE *included_f; + char *included_file; + included_file = strchr (line, ' '); + if (!included_file) + fatal (file, lineno, "invalid syntax, expected: include filename"); - while (isspace(*file)) - file++; - f = scanopen (file); - if (!f) - fatal (file, 0, "can't open"); - n = scan (f, file, freezer); - fclose (f); - return n; + while (isspace(*included_file)) + included_file++; + included_f = scanopen (included_file); + if (!included_f) + fatal (included_file, 0, "can't open"); + n = scan (included_f, included_file, freezer); + fclose (included_f); + if (!c) + c = FcCharSetCreate (); + if (!FcCharSetMerge (c, n, NULL)) + fatal (file, lineno, "out of memory"); + FcCharSetDestroy (n); + continue; } if (strchr (line, '-')) {