From 4acd8d1dce06ffe849e477159cd780e714b7c07e Mon Sep 17 00:00:00 2001 From: "srowen@gmail.com" Date: Thu, 20 May 2010 13:17:39 +0000 Subject: [PATCH] Fixes from Konstantin git-svn-id: http://zxing.googlecode.com/svn/trunk@1377 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- iphone/Classes/Decoder.mm | 16 +++++++++------- iphone/ZXingWidget/Decoder.mm | 19 +++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/iphone/Classes/Decoder.mm b/iphone/Classes/Decoder.mm index ea7748b4..d5ca9cfc 100644 --- a/iphone/Classes/Decoder.mm +++ b/iphone/Classes/Decoder.mm @@ -59,6 +59,8 @@ using namespace zxing; if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) { [self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result]; } + + [result release]; } - (void)failedToDecodeImage:(NSString *)reason { @@ -185,8 +187,8 @@ using namespace zxing; NSString *resultString = [NSString stringWithCString:cString encoding:NSUTF8StringEncoding]; - decoderResult = [TwoDDecoderResult resultWithText:resultString - points:points]; + decoderResult = [[TwoDDecoderResult resultWithText:resultString + points:points] retain]; } catch (ReaderException &rex) { NSLog(@"failed to decode, caught ReaderException '%s'", rex.what()); @@ -210,7 +212,10 @@ using namespace zxing; } } #endif - + + free(subsetData); + self.subsetData = NULL; + if (decoderResult) { [self performSelectorOnMainThread:@selector(didDecodeImage:) withObject:decoderResult @@ -220,9 +225,6 @@ using namespace zxing; withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.") waitUntilDone:NO]; } - - free(subsetData); - self.subsetData = NULL; } [pool drain]; #ifdef DEBUG @@ -236,7 +238,7 @@ using namespace zxing; } - (void) decodeImage:(UIImage *)i { - [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)]; + [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, i.size.width, i.size.height)]; } - (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr { diff --git a/iphone/ZXingWidget/Decoder.mm b/iphone/ZXingWidget/Decoder.mm index 55d927ae..d5ca9cfc 100644 --- a/iphone/ZXingWidget/Decoder.mm +++ b/iphone/ZXingWidget/Decoder.mm @@ -59,6 +59,8 @@ using namespace zxing; if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) { [self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result]; } + + [result release]; } - (void)failedToDecodeImage:(NSString *)reason { @@ -132,9 +134,6 @@ using namespace zxing; #endif self.subsetImage = [UIImage imageWithCGImage:subsetImageRef]; - // for debug purposes. -// UIImageWriteToSavedPhotosAlbum(self.subsetImage, nil, nil, nil); - CGImageRelease(subsetImageRef); CGContextRelease(ctx); @@ -188,8 +187,8 @@ using namespace zxing; NSString *resultString = [NSString stringWithCString:cString encoding:NSUTF8StringEncoding]; - decoderResult = [TwoDDecoderResult resultWithText:resultString - points:points]; + decoderResult = [[TwoDDecoderResult resultWithText:resultString + points:points] retain]; } catch (ReaderException &rex) { NSLog(@"failed to decode, caught ReaderException '%s'", rex.what()); @@ -213,7 +212,10 @@ using namespace zxing; } } #endif - + + free(subsetData); + self.subsetData = NULL; + if (decoderResult) { [self performSelectorOnMainThread:@selector(didDecodeImage:) withObject:decoderResult @@ -223,9 +225,6 @@ using namespace zxing; withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.") waitUntilDone:NO]; } - - free(subsetData); - self.subsetData = NULL; } [pool drain]; #ifdef DEBUG @@ -239,7 +238,7 @@ using namespace zxing; } - (void) decodeImage:(UIImage *)i { - [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)]; + [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, i.size.width, i.size.height)]; } - (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr { -- 2.20.1