From e56c5733ecb26019a2a7c0f4bae733b267efbe5c Mon Sep 17 00:00:00 2001 From: Jia-Hong Chen Date: Wed, 27 Mar 2013 12:42:51 -0700 Subject: [PATCH] 8010005: [parfait] Memory leak in jdk/src/macosx/native/sun/awt/CTextPipe.m Reviewed-by: bae, prr --- jdk/src/macosx/native/sun/awt/CTextPipe.m | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jdk/src/macosx/native/sun/awt/CTextPipe.m b/jdk/src/macosx/native/sun/awt/CTextPipe.m index 6b1da8dea2b..578bf9ca0e3 100644 --- a/jdk/src/macosx/native/sun/awt/CTextPipe.m +++ b/jdk/src/macosx/native/sun/awt/CTextPipe.m @@ -501,10 +501,22 @@ static inline void doDrawGlyphsPipe_getGlyphVectorLengthAndAlloc int *uniChars = (int *)malloc(sizeof(int) * length); CGSize *advances = (CGSize *)malloc(sizeof(CGSize) * length); - if (glyphs == NULL || advances == NULL) + if (glyphs == NULL || uniChars == NULL || advances == NULL) { (*env)->DeleteLocalRef(env, glyphsArray); [NSException raise:NSMallocException format:@"%s-%s:%d", THIS_FILE, __FUNCTION__, __LINE__]; + if (glyphs) + { + free(glyphs); + } + if (uniChars) + { + free(uniChars); + } + if (advances) + { + free(advances); + } return; }