diff options
author | Keith Packard <keithp@neko.keithp.com> | 2006-09-02 20:23:31 -0700 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2006-09-02 20:23:31 -0700 |
commit | 04cedae0d5a720662bdc0de3d4cb97f6c77e7d1a (patch) | |
tree | d7b6dc8910cd264d9190339cf4d5e25bba43e8b3 | |
parent | fb6e30ab3ef74021978d260fb7f2c40a0b5a0b06 (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.c | 6 |
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; |