|
Lines 82-89
struct _XimCacheStruct {
Link Here
|
| 82 |
DTCharIndex mbused; |
82 |
DTCharIndex mbused; |
| 83 |
DTCharIndex wcused; |
83 |
DTCharIndex wcused; |
| 84 |
DTCharIndex utf8used; |
84 |
DTCharIndex utf8used; |
| 85 |
char fname[1]; |
85 |
char fname[]; |
| 86 |
/* char encoding[1] */ |
86 |
/* char encoding[] */ |
| 87 |
}; |
87 |
}; |
| 88 |
|
88 |
|
| 89 |
static struct _XimCacheStruct* _XimCache_mmap = NULL; |
89 |
static struct _XimCacheStruct* _XimCache_mmap = NULL; |
|
Lines 281-287
_XimReadCachedDefaultTree(
Link Here
|
| 281 |
assert (m->id == XIM_CACHE_MAGIC); |
281 |
assert (m->id == XIM_CACHE_MAGIC); |
| 282 |
assert (m->version == XIM_CACHE_VERSION); |
282 |
assert (m->version == XIM_CACHE_VERSION); |
| 283 |
if (size != m->size || |
283 |
if (size != m->size || |
| 284 |
size < XOffsetOf (struct _XimCacheStruct, fname) + namelen + encodinglen) { |
284 |
size < sizeof (struct _XimCacheStruct) + namelen + encodinglen) { |
| 285 |
fprintf (stderr, "Ignoring broken XimCache %s [%s]\n", name, encoding); |
285 |
fprintf (stderr, "Ignoring broken XimCache %s [%s]\n", name, encoding); |
| 286 |
munmap (m, size); |
286 |
munmap (m, size); |
| 287 |
return False; |
287 |
return False; |
|
Lines 442-448
_XimWriteCachedDefaultTree(
Link Here
|
| 442 |
int fd; |
442 |
int fd; |
| 443 |
FILE *fp; |
443 |
FILE *fp; |
| 444 |
struct _XimCacheStruct *m; |
444 |
struct _XimCacheStruct *m; |
| 445 |
int msize = (XOffsetOf(struct _XimCacheStruct, fname) |
445 |
int msize = (sizeof(struct _XimCacheStruct) |
| 446 |
+ strlen(name) + strlen(encoding) + 2 |
446 |
+ strlen(name) + strlen(encoding) + 2 |
| 447 |
+ XIM_CACHE_TREE_ALIGNMENT-1) & -XIM_CACHE_TREE_ALIGNMENT; |
447 |
+ XIM_CACHE_TREE_ALIGNMENT-1) & -XIM_CACHE_TREE_ALIGNMENT; |
| 448 |
DefTreeBase *b = &im->private.local.base; |
448 |
DefTreeBase *b = &im->private.local.base; |
| 449 |
- |
|
|