Protect against possible division by zeros (#316468, Steve Grubb)

2005-11-23  Behdad Esfahbod  <behdad@gnome.org>

        Protect against possible division by zeros (#316468, Steve Grubb)

        * pango/pango-context.c (update_metrics_from_items),
        pango/pango-fontset.c (pango_fontset_real_get_metrics): If count is
        zero, do not alter approximate_{char,digit}_width.

        * pango/opentype/disasm.c: Err on invalid DeltaFormat.
This commit is contained in:
Behdad Esfahbod 2005-11-23 15:19:48 +00:00 committed by Behdad Esfahbod
parent e6e15352d1
commit 682db81c23
1 changed files with 18 additions and 10 deletions

View File

@ -444,18 +444,26 @@ Dump_Device (TTO_Device *Device, FILE *stream, int indent, FT_Bool is_gsub)
break; break;
} }
n_per = 16 / bits;
mask = (1 << bits) - 1;
mask = mask << (16 - bits);
DUMP ("<DeltaValue>"); DUMP ("<DeltaValue>");
for (i = Device->StartSize; i <= Device->EndSize ; i++) if (!bits)
{ {
FT_UShort val = Device->DeltaValue[i / n_per];
FT_Short signed_val = ((val << ((i % n_per) * bits)) & mask); fprintf(stderr, "invalid DeltaFormat!!!!!\n");
dump (stream, indent, "%d", signed_val >> (16 - bits)); }
if (i != Device->EndSize) else
DUMP (", "); {
n_per = 16 / bits;
mask = (1 << bits) - 1;
mask = mask << (16 - bits);
for (i = Device->StartSize; i <= Device->EndSize ; i++)
{
FT_UShort val = Device->DeltaValue[i / n_per];
FT_Short signed_val = ((val << ((i % n_per) * bits)) & mask);
dump (stream, indent, "%d", signed_val >> (16 - bits));
if (i != Device->EndSize)
DUMP (", ");
}
} }
DUMP ("</DeltaValue>\n"); DUMP ("</DeltaValue>\n");
} }