diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2009-11-16 18:29:26 -0500 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2009-11-16 18:29:26 -0500 |
commit | a3b2426819836ab2454c6a7bad27c382f4a245bf (patch) | |
tree | 63c8a3a9e6f20a4b7ef8b54f228ba1545c10fa6c /src/fclang.c | |
parent | 8480c6f86327877fce729ebb01b52bd7a40ddfc5 (diff) |
[lang] Fix serializing LangSet from older versions
Diffstat (limited to 'src/fclang.c')
-rw-r--r-- | src/fclang.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/fclang.c b/src/fclang.c index 61c4da6..1d62c4e 100644 --- a/src/fclang.c +++ b/src/fclang.c @@ -537,9 +537,10 @@ FcChar32 FcLangSetHash (const FcLangSet *ls) { FcChar32 h = 0; - int i; + int i, count; - for (i = 0; i < ls->map_size; i++) + count = FC_MIN (ls->map_size, NUM_LANG_SET_MAP); + for (i = 0; i < count; i++) h ^= ls->map[i]; if (ls->extra) h ^= ls->extra->num; @@ -777,7 +778,9 @@ FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l) if (!l_serialize) return NULL; - *l_serialize = *l; + memset (l_serialize->map, '\0', sizeof (l_serialize->map)); + memcpy (l_serialize->map, l->map, FC_MIN (sizeof (l_serialize->map), l->map_size * sizeof (l->map[0]))); + l_serialize->map_size = NUM_LANG_SET_MAP; l_serialize->extra = NULL; /* We don't serialize ls->extra */ return l_serialize; } |