# HG changeset patch # User Kim F. Storm # Date 1072570365 0 # Node ID 0432020d46a779336c10153103e1dd472b357196 # Parent c23cf5520cd932ddbea6785d2dbda564e35a0a2e (cache_face): Abort if c->size exceeds MAX_FACE_ID. diff -r c23cf5520cd9 -r 0432020d46a7 src/xfaces.c --- a/src/xfaces.c Sun Dec 28 00:12:27 2003 +0000 +++ b/src/xfaces.c Sun Dec 28 00:12:45 2003 +0000 @@ -5577,12 +5577,19 @@ face->id = i; /* Maybe enlarge C->faces_by_id. */ - if (i == c->used && c->used == c->size) - { - int new_size = 2 * c->size; - int sz = new_size * sizeof *c->faces_by_id; - c->faces_by_id = (struct face **) xrealloc (c->faces_by_id, sz); - c->size = new_size; + if (i == c->used) + { + if (c->used == c->size) + { + int new_size, sz; + new_size = min (2 * c->size, MAX_FACE_ID); + if (new_size == c->size) + abort (); /* Alternatives? ++kfs */ + sz = new_size * sizeof *c->faces_by_id; + c->faces_by_id = (struct face **) xrealloc (c->faces_by_id, sz); + c->size = new_size; + } + c->used++; } #if GLYPH_DEBUG @@ -5601,8 +5608,6 @@ #endif /* GLYPH_DEBUG */ c->faces_by_id[i] = face; - if (i == c->used) - ++c->used; }