# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1617700746 0 # Node ID 929ce3cd18eae24383881a7239d1f76d5e9e71de # Parent ab36fbb50fe58b086b86a300d42d5590f69c63ec iOS: Fix bitblt and crashes due to missing retains. diff -r ab36fbb50fe5 -r 929ce3cd18ea ios/dw.m --- a/ios/dw.m Tue Apr 06 08:54:57 2021 +0000 +++ b/ios/dw.m Tue Apr 06 09:19:06 2021 +0000 @@ -1169,10 +1169,10 @@ if(context) UIGraphicsPushContext(context); - if(bltdest && [bltsrc isMemberOfClass:[UIImage class]]) - { - UIImage *rep = bltsrc; - UIImage *image = [[UIImage alloc] initWithCGImage:[rep CGImage]]; + if(bltdest && [bltsrc isMemberOfClass:[DWImage class]]) + { + DWImage *rep = bltsrc; + UIImage *image = [rep image]; CGBlendMode op = kCGBlendModeNormal; if(bltinfo->srcwidth != -1) @@ -1187,8 +1187,6 @@ /*fromRect:CGRectMake(bltinfo->xsrc, bltinfo->ysrc, bltinfo->width, bltinfo->height)*/ blendMode:op alpha:1.0]; } - [bltsrc release]; - [image release]; } if(context) UIGraphicsPopContext(); @@ -1517,6 +1515,7 @@ CGImageRef cgimage = CGBitmapContextCreateImage(cgcontext); image = [UIImage imageWithCGImage:cgimage]; CGContextRelease(cgcontext); + [image retain]; } return self; } @@ -1560,6 +1559,7 @@ image = [UIImage imageWithCGImage:cgimage]; CGContextRelease(cgcontext); cgcontext = nil; + [image retain]; [oldimage release]; } return image;