2006-09-13 Mark Rowe <opendarwin.org@bdash.net.nz>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Sep 2006 04:41:51 +0000 (04:41 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Sep 2006 04:41:51 +0000 (04:41 +0000)
        Reviewed by Eric.

        http://bugzilla.opendarwin.org/show_bug.cgi?id=10836
        Bug 10836: REGRESSION: Mac implementation of Font::drawGlyphs leaks a CGColorRef

        * platform/mac/FontMac.mm:
        (WebCore::Font::drawComplexText): Release CGColorRef after use.
        (WebCore::Font::drawGlyphs): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16356 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/mac/FontMac.mm

index a6366fa8965f773bfa572972121f9e23588e2a0f..3755d0633aa35020b778935ae32b0c1c45d5277f 100644 (file)
@@ -1,3 +1,14 @@
+2006-09-13  Mark Rowe  <opendarwin.org@bdash.net.nz>
+
+        Reviewed by Eric.
+
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=10836
+        Bug 10836: REGRESSION: Mac implementation of Font::drawGlyphs leaks a CGColorRef
+
+        * platform/mac/FontMac.mm:
+        (WebCore::Font::drawComplexText): Release CGColorRef after use.
+        (WebCore::Font::drawGlyphs): Ditto.
+
 2006-09-14  Anders Carlsson  <acarlsson@apple.com>
 
         Try fixing the Win32 build.
index 6c1d6b9b6236555b216255f2a67572cbb0fa05d2..884c63ee32ec3d004b8b22b24983023761106151 100644 (file)
@@ -482,7 +482,9 @@ void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run,
     
     // ATSUI can't draw beyond -32768 to +32767 so we translate the CTM and tell ATSUI to draw at (0, 0).
     CGContextRef context = graphicsContext->platformContext();
-    CGContextSetFillColorWithColor(context, cgColor(graphicsContext->pen().color()));
+    CGColorRef penColor = cgColor(graphicsContext->pen().color());
+    CGContextSetFillColorWithColor(context, penColor); // WebCore expects text to respect the pen color, CG expects text to use fill
+    CGColorRelease(penColor);
     CGContextTranslateCTM(context, point.x(), point.y());
     status = ATSUDrawText(params.m_layout, adjustedRun.from(), runLength, 0, 0);
     if (status == noErr && params.m_hasSyntheticBold) {
@@ -591,7 +593,9 @@ void Font::drawGlyphs(GraphicsContext* context, const FontData* font, const Glyp
     wkSetCGFontRenderingMode(cgContext, drawFont);
     CGContextSetFontSize(cgContext, 1.0f);
 
-    CGContextSetFillColorWithColor(cgContext, cgColor(context->pen().color())); // WebCore expects text to respect the pen color, CG expects text to use fill
+    CGColorRef penColor = cgColor(context->pen().color());
+    CGContextSetFillColorWithColor(cgContext, penColor); // WebCore expects text to respect the pen color, CG expects text to use fill
+    CGColorRelease(penColor);
 
     CGContextSetTextPosition(cgContext, point.x(), point.y());
     CGContextShowGlyphsWithAdvances(cgContext, glyphBuffer.glyphs(from), glyphBuffer.advances(from), numGlyphs);