summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@neko.keithp.com>2006-09-02 20:23:31 -0700
committerKeith Packard <keithp@neko.keithp.com>2006-09-02 20:23:31 -0700
commit04cedae0d5a720662bdc0de3d4cb97f6c77e7d1a (patch)
treed7b6dc8910cd264d9190339cf4d5e25bba43e8b3
parentfb6e30ab3ef74021978d260fb7f2c40a0b5a0b06 (diff)
Don't segfault when string values can't be parsed as charsets or langsets.
If parsing charsets or langsets fails, return a FcTypeVoid value instead of a charset/langset value with a NULL pointer in it (which is invalid).
-rw-r--r--src/fcname.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/fcname.c b/src/fcname.c
index 6f74bb1..cfc6b31 100644
--- a/src/fcname.c
+++ b/src/fcname.c
@@ -567,6 +567,8 @@ FcNameConvert (FcType type, FcChar8 *string, FcMatrix *m)
break;
case FcTypeString:
v.u.s = FcStrStaticName(string);
+ if (!v.u.s)
+ v.type = FcTypeVoid;
break;
case FcTypeBool:
if (!FcNameBool (string, &v.u.b))
@@ -581,9 +583,13 @@ FcNameConvert (FcType type, FcChar8 *string, FcMatrix *m)
break;
case FcTypeCharSet:
v.u.c = FcNameParseCharSet (string);
+ if (!v.u.c)
+ v.type = FcTypeVoid;
break;
case FcTypeLangSet:
v.u.l = FcNameParseLangSet (string);
+ if (!v.u.l)
+ v.type = FcTypeVoid;
break;
default:
break;