From: Jim Meyering Date: Tue, 23 Jun 2009 06:49:20 +0000 (+0000) Subject: Don't dereference NULL upon failed malloc and realloc. X-Git-Tag: emacs-pretest-23.1.90~2450 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c6da7cd2b63cc9094d690b74875bf8609b5c0107;p=emacs.git Don't dereference NULL upon failed malloc and realloc. * src/ftfont.c (setup_otf_gstring, ftfont_shape_by_flt): Use xmalloc and xrealloc (not malloc and realloc), so subsequent heap pointer dereferences are guaranteed to be valid. --- diff --git a/src/ChangeLog b/src/ChangeLog index a0f2650445a..9e1830e4d4a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2009-06-23 Jim Meyering + + Don't dereference NULL upon failed malloc and realloc + * src/ftfont.c (setup_otf_gstring, ftfont_shape_by_flt): Use xmalloc + and xrealloc (not malloc and realloc), so subsequent heap pointer + dereferences are guaranteed to be valid. + 2009-06-23 Kenichi Handa * emacs.c (main): Call init_font (). diff --git a/src/ftfont.c b/src/ftfont.c index 695579a05f8..70c1797dce0 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -1700,13 +1700,13 @@ setup_otf_gstring (int size) { if (otf_gstring.size == 0) { - otf_gstring.glyphs = (OTF_Glyph *) malloc (sizeof (OTF_Glyph) * size); + otf_gstring.glyphs = (OTF_Glyph *) xmalloc (sizeof (OTF_Glyph) * size); otf_gstring.size = size; } else if (otf_gstring.size < size) { - otf_gstring.glyphs = (OTF_Glyph *) realloc (otf_gstring.glyphs, - sizeof (OTF_Glyph) * size); + otf_gstring.glyphs = xrealloc (otf_gstring.glyphs, + sizeof (OTF_Glyph) * size); otf_gstring.size = size; } otf_gstring.used = size; @@ -2037,13 +2037,13 @@ ftfont_shape_by_flt (lgstring, font, ft_face, otf) { gstring.allocated = len * 2; gstring.glyph_size = sizeof (MFLTGlyph); - gstring.glyphs = malloc (sizeof (MFLTGlyph) * gstring.allocated); + gstring.glyphs = xmalloc (sizeof (MFLTGlyph) * gstring.allocated); } else if (gstring.allocated < len * 2) { gstring.allocated = len * 2; - gstring.glyphs = realloc (gstring.glyphs, - sizeof (MFLTGlyph) * gstring.allocated); + gstring.glyphs = xrealloc (gstring.glyphs, + sizeof (MFLTGlyph) * gstring.allocated); } memset (gstring.glyphs, 0, sizeof (MFLTGlyph) * len); for (i = 0; i < len; i++) @@ -2092,8 +2092,8 @@ ftfont_shape_by_flt (lgstring, font, ft_face, otf) if (result != -2) break; gstring.allocated += gstring.allocated; - gstring.glyphs = realloc (gstring.glyphs, - sizeof (MFLTGlyph) * gstring.allocated); + gstring.glyphs = xrealloc (gstring.glyphs, + sizeof (MFLTGlyph) * gstring.allocated); } if (gstring.used > LGSTRING_GLYPH_LEN (lgstring)) return Qnil;